What does classname.class return?

It returns the same what Object.getClass() does for a given instance, but you can use it when you know statically what class you want (i.e. at compile time).

From the Javadoc:

Returns the runtime class of this Object.

In short, it gives you an object that represents the class of the (original) object. It's used, amongst other things, by reflection when you want to programatically discover methods and fields in order to invoke/access them.

For example:

        Method m[] = String.class.getDeclaredMethods();
        for (int i = 0; i < m.length; i++)
        {
          System.out.println(m[i].toString());
        }

The Javadoc also refers you to the Java Language Specification - Class Literals (which might be a little heavy reading).


.class is a class literal... Just like 5 is an int literal, like 5.0 is a double literal (surprisingly, there is a class named 'Class' in java.lang package).

Therefore you can print the class literal (just like you can print any object... you get what the toString() method returns in the Class class). You can have a Class variable.

PS: there are many functions that you can use


It returns the Class object that represents the specified class name. This is used if you need to get the Class object.

This roughly corresponds to .getClass() which returns the Class object that corresponds to the object instance. You use someclassname.class when you want to work with the Class object and don't have an object instance.

Tags:

Java

Oop