.class是方法还是字段?

Ada*_*Lee 22 java class

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

boolean alwaysTrue = (String.class == Class.forName("java.lang.String"));
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 33

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

  • 具体来说,*class literal*:http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#250782 (4认同)

小智 11

.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());
Run Code Online (Sandbox Code Playgroud)


Vir*_*zzo 5

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

两者都不是。它是在编译时评估Class该类的对象的表达式。