36

是什么.class意思,例如,MyClass.class?我知道当您输入一个类的名称以及它用于访问其静态字段或方法的点时,但这与“.class”无关

4

3 回答 3

18

SomeClass.class获取Class<SomeClass>可用于使用反射 API进行编程的类型。

如果你有一个类的实例,你可以获得相同的类型instance.getClass()

您可以在此处查看文档。例如,您可以:

  • 获取字段和方法的名称、注释等。
  • 调用方法,获取构造函数以创建类的新实例
  • 获取类名、超类名、包名等
于 2013-02-26T23:59:46.987 回答
10

当你写.class在类名之后时,它引用Class代表给定类的对象(正式地,它是一个命名的类字面量)。的类型NombreClase.classClass<NombreClase>

例如,NombreClase.class是一个表示NombreClase运行时类的对象。它与getClass()的任何(直接)实例的方法返回的对象相同NombreClase

NombreClase obj = new NombreClase();
System.out.println(NombreClase.class.getName());
System.out.println(obj.getClass().getName())
于 2013-02-27T00:02:33.917 回答
7

您可以添加.class到任何类的名称以检索其Class对象的实例。

使用时,Integer.class您引用 的实例Class<Integer>,这是一个类型化的类对象。

我一直以为这是编译器添加的字段成员,但看起来它实际上只是语法糖。

于 2013-02-27T00:02:55.033 回答