In API
"The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void."
java.lang.Void
be used? If the class is "uninstantiable", what use is it?java.lang.Void
and void
?java.lang.Void
is analogous to java.lang.Integer
. Integer
is a way of boxing values of the primitive type int
. Void
is a way of boxing values of the primitive type void
.
"But wait, void
doesn't have any possible values!"
Right! That's what makes java.lang.Void
"uninstantiable". :)
It's a nice feature of the Java type system that every primitive type has a boxed equivalent. int
has Integer
, long
has Long
, byte
has Byte
... and void
has Void
. It would be weird and asymmetrical if Void
didn't exist.
"So what's the difference between java.lang.Void
and void
?"
Easy. void
is a primitive type. Void
is an reference type that inherits from Object
. They're similar in that neither of them has any possible values; but nevertheless they are two very different types, from the type system's point of view.
"But I don't have any use for Void
in my programs."
And I don't have any use for GarbageCollectorMXBean
in mine. Some features don't have non-obscure uses. That's okay.