有两种方法可以获取类的Class
对象。
-
静态:
Class cls = Object.class;
-
从实例:
Object ob = new Object(); Class cls = ob.getClass();
现在我的问题是getClass()
是Object
类中存在的方法,但什么是.class
?它是一个变量吗?如果是这样,那么它在 Java 中定义在哪里?
这是在内部实现的,称为由JVM处理的类文字。
Java 语言规范特别提到了术语"令牌"。
所以.class
不仅仅是一个变量,坦率地说,它根本不是一个变量。在更广泛的层面上,您可以将其视为关键字或标记。
https://docs.oracle.com/javase/specs/jls/se9/html/jls-15.html#jls-15.8.2
类文本是由类、接口、数组或基元类型的名称或伪类型
类void
组成的表达式,后跟 '.
' 和标记class
。文本计算为由当前实例的类的定义类装入器 (§12.2( 定义的命名类型(或
void
(的Class
对象。
信息驻留在类"file"中,尽管类在文件系统中不需要有物理.class文件。JVM负责使其从类定义中可用,如其他答案所述。
另请参阅:https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html