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

Pav*_*ant 12 java

获取类的Class对象有两种方法.

  1. 静态:

    Class cls = Object.class;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从一个实例:

    Object ob = new Object();  
    Class cls = ob.getClass();
    
    Run Code Online (Sandbox Code Playgroud)

现在我的问题是课堂上getClass()出现的一种方法Object,但是什么.class呢?它是变量吗?如果是这样,那么它在Java中的定义是什么?

Sur*_*tta 9

这是在内部实现的,并称为由JVM处理的类文字.

Java语言规范特别提到了术语"令牌".

所以.class不仅仅是一个变量,坦白说它根本不是一个变量.在更广泛的层面上,您可以将其视为关键字或令牌.

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

类文字是一个表达式,由类,接口,数组或基本类型的名称或伪类型组成void,后跟一个' .'和标记class.

类文本计算Class指定类型(或for void)的对象,该类型由当前实例的类的定义类加载器(第12.2节)定义.

  • 顺便提一下,`Object.getClass()` 是用 `native` 关键字定义的,因此它也由 JVM 处理。两种方式可能共享相同的本机实现。 (2认同)