.class是方法还是字段?

时间:2012-01-12 14:24:25

标签: java class

java中的任何类都有.class,我想知道.class是否是静态方法?或者它是一个公共静态字段?

boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));

3 个答案:

答案 0 :(得分:33)

它既不是。
它是一个内置语言功能(类文字),看起来像一个公共静态最终字段。

答案 1 :(得分:8)

在类名后面写.class时,它会引用代表给定类的Class对象。如果没有可用的类实例,则使用.class

例如,如果您的类是Print(建议类名以大写字母开头),则Print.class是表示运行时Print类的对象。它与getClass()

的任何(直接)实例的Print.方法返回的对象相同
Print myPrint = new Print();
System.out.println(Print.class.getName());
System.out.println(myPrint.getClass().getName());

答案 2 :(得分:4)

https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.8.2

它既不是。它是在编译时计算到该类的Class对象的表达式。