Class literals work with regular classes as well as interfaces, arrays, and primitive types. In addition, there's a standard field called TYPE that exists for each of the primitive wrapper classes. TYPE char.class Character. TYPE short.class Short. TYPE float.class Float.
TYPE double.class Double.
TYPE void.class Void. The Class object representing the type of your object. The Class object can be queried for useful runtime information. It simply tells the compiler to treat the object as the new type. If casting a Circle to a Shape is an upcast, then casting a Shape to a Circle is a downcast.