考虑下面的示例代码
public class Test {
public static void main(String args[]) {
Test t = new Test();
Class c2 = Test.class;
System.out.println(c2);
}
}
Test.class
静态评估并返回编译时 Class 对象。查看Test.class
语法,它看起来像变量类是type java.lang.Class and is static and public
. 我的问题是这个变量在哪里定义?它不存在于 Test 类中(因为我没有声明它),它也不存在于 java.lang.Object 类中。
我看到了一个类似的方法public final native Class<?> getClass();
。这存在于java.lang.Object
并且是一个native java method
. 此方法返回对象的运行时类。
所以我的问题是这个公共和静态类变量在哪里定义?(如果我弄错了,请纠正我)它又是一些本机实现吗?这是在编译时设置的,并且是静态的不需要创建类实例。因此,即使这是一些本机实现,它是由registerNatives()
java.lang.Object 中的方法初始化的吗?