例如,.class
在MyClass.class
中是什么意思?我知道,当你输入一个类的名称和它用来访问其静态字段或方法的点时,但这与".class"无关
SomeClass.class
获取Class<SomeClass>
类型,您可以使用该类型使用反射API进行编程。
如果您有一个使用instance.getClass()
的类实例,则可以获得相同的类型。
你可以在这里查看文档。例如,您可以:
- 获取字段和方法、注释等的名称
- invoke方法,获取构造函数以创建类的新实例
- 获取类、超类、包等的名称
当您在类名后写入.class
时,它引用代表给定类的Class
对象(形式上,它是一个命名的类文本(。NombreClase.class
的类型为Class<NombreClase>
。
例如,NombreClase.class
是在运行时表示类NombreClase
的对象。它与NombreClase
的任何(直接(实例的getClass()
方法返回的对象相同。
NombreClase obj = new NombreClase();
System.out.println(NombreClase.class.getName());
System.out.println(obj.getClass().getName())
您可以将.class
添加到任何类的名称中,以检索其class对象的实例。
当您使用Integer.class
时,您引用了Class<Integer>
的一个实例,它是一个类型化的类对象。
我一直认为这是编译器添加的字段成员,但看起来它实际上只是语法糖。