I found a few days ago a code in Java that uses the class keyword in the context, for example:
MyConcreteClass.class.AMethod();
I've tried to do it in a JFrame, for example:
JFrame.class.getName();
And that works but... I can't figure out/find on the internet what this keyword means in that context. I've only used it to declare classes.
Can anyone explain me what class means in this context?
Thanks,
Using the
class
keyword in your example will give you an object instance of theClass<JFrame>
type.When you do JFrame.class you are getting a
Class<JFrame>
instance, so you can call thegetName
method.The class literal allows you access to information about the class in question.
In this context,
class
is part of a class literal referring to the Class object representing that class.In this context
class
is not a keyword, it's a special attribute (a "class literal") of a class denoting its corresponding instance ofClass
. For example, to obtain theClass
object ofString
, we do this:String.class
. The value returned is the instance ofClass
that representsString
's class (notice the use of upper and lowercase).Here
.class
is used on the actual class, to obtain the same result using one of its instances we use thegetclass()
method. Continuing with our example, this snippet returns the same instance ofClass
corresponding to aString
:"".getClass()
.To round the idea - this snippet will always return
true
, for any class with a corresponding instance you want to test: