What does .class mean after a class name

前端 未结 3 1318
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-25 12:03

What does .class mean in, for example, MyClass.class? I understand that when you put the name of a class and the point it is used to access its sta

相关标签:
3条回答
  • 2020-12-25 12:49

    SomeClass.class gets the Class<SomeClass> type which you can use for programming using the reflection API.

    You can get the same type if you have an instance of the class using instance.getClass().

    You can check out the documentation here. For example, you can:

    • get the names of fields and methods, annotations, etc.
    • invoke methods, get constructor to create new instances of the class
    • get the name of the class, the superclass, package, etc
    0 讨论(0)
  • 2020-12-25 12:50

    You can add .class to the name of any class to retrieve an instance of its Class object.

    When you use Integer.class you reference an instance of Class<Integer>, which is a typed class object.

    I always thought this was a field member that got added by the compiler, but it looks like it's really just syntactic sugar.

    0 讨论(0)
  • 2020-12-25 12:52

    When you write .class after a class name, it references the Class object that represents the given class (formally, it is a named class literal). The the type of NombreClase.class is Class<NombreClase>.

    E.g., NombreClase.class is an object that represents the class NombreClase on runtime. It is the same object that is returned by the getClass() method of any (direct) instance of NombreClase.

    NombreClase obj = new NombreClase();
    System.out.println(NombreClase.class.getName());
    System.out.println(obj.getClass().getName())
    
    0 讨论(0)
提交回复
热议问题