java中的任何类都有.class,我想知道.class是否是静态方法?或者它是一个公共静态字段?
boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));
答案 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
对象的表达式。