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).


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.


.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


Object.getclass = className.class

They both return the runtime class of the object

eg

Class lii = SomeClass.class;
Class leo = new SomeClass().getClass();
//lii==leo

Just like

String var1 = "heloo";
int var2 = 9;
float var3 = 8.0;

var1 stores "heloo" which is a String literal, var2 stores 9 which is an integer literal, var3 stores 8.0 which is a float literal, so also lii and leo stores class literal generated from SomeClass.java file at runtime