Java 中在哪里定义.class?(它是一个变量还是什么?



有两种方法可以获取类的Class对象。

  1. 静态:

    Class cls = Object.class;
    
  2. 从实例:

    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

相关内容

最新更新