有两种获取类Class
对象的方法。
静:
Class cls = Object.class;
来自一个实例:
Object ob = new Object();
Class cls = ob.getClass();
现在我的问题是getClass()
是Object
类中存在的方法,
但是什么是.class
?它是变量吗?如果是这样,那么在Java中定义了什么?
答案 0 :(得分:9)
这是在内部实现的,并且称为类文字,由JVM处理。
Java语言规范特别为其提及术语“令牌”。
所以.class
不仅仅是一个变量,坦白说它根本不是一个变量。在更广泛的层面上,您可以将其视为关键字或令牌。
https://docs.oracle.com/javase/specs/jls/se9/html/jls-15.html#jls-15.8.2
类文字是一个表达式,包含类,接口,数组或基本类型的名称,或伪类型
void
,后跟“.
”和令牌class
。类文字求值为
Class
对象的命名类型(或void
),由当前实例的类的定义类加载器(第12.2节)定义。
答案 1 :(得分:0)
该信息存在于类'文件中,尽管类不需要在文件系统中具有物理.class文件。 JVM负责从类定义中获取它,正如其他答案所述。
另见: https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html