/*
* A class for creating object using .class property
*/
class Customer{
}
public class MyApp {
public static void main(String[] args) {
// Can someone explain how internally it return Class object
Class customerClass = Customer.class;
System.out.println("Class : " + customerClass);
}
}
答案 0 :(得分:2)
使用javap -c MyApp
,您将看到第一个字节码是什么:
$ javap -c MyApp
Compiled from "MyApp.java"
public class MyApp {
...
public static void main(java.lang.String[]);
Code:
0: ldc_w #2 // class Customer
...
换句话说,Customer.class
被编译为ldc
(加载常量)字节码指令,它引用常量池中的Customer
类。
答案 1 :(得分:0)
JLS-4.3.2. The Class Object说(部分)
方法getClass返回表示对象类的Class对象。
每种引用类型都存在
Class
对象。例如,它可用于发现类的完全限定名称,其成员,直接超类以及它实现的任何接口。
getClass
方法调用表达式的类型为Class<? extends |T|>
,其中T
是getClass
搜索的类(§15.12.1)。声明为synchronized(§8.4.3.6)的类方法在与类的
Class
对象关联的监视器上同步。