So there’s a class named Class. But it represents interfaces, annotations and enums too. What’s up with that?
From the documentation:
Instances of the class
Class
represent classes and interfaces in a running Java application.
The method to get it is called getClass
. But that makes sense as it returns an object representing the class (not an interface).
There’s also an interface called Type
. And in Java every class and interface define a type. This even represents raw types, parameterized types, array types, type variables and primitive types.
So why don’t they use Type
instead of Class
? Probably because they needed a type for a method called getClass
and it seemed correct to use Class
as its name.
Type
actually exists as an interface, which Class
implements. So you can always cast it to Type
if you think it helps. And type
is not reserved while class
is. So that’s a better variable name too.
PS: Even the keyword void
is represented as a Class.