这并不难理解String.class.getClass()
,它的意思是返回一个
Class.class.getClass()
时发生了什么,我可以理解为返回一个代表Class对象本身的运行时类的Class对象吗?这如何在Java反射API中实现? 代表类对象本身的运行时类的类对象?
是的。
但String.class.getClass()
也是一样的
String.class
已经表示"代表String类的Class类型的对象"。调用.getClass()
意味着"代表Class类的Class类型的对象",因为我们是在一个Class类型的对象上调用它。
如果你有一个字符串对象,例如"hi mom",那么你可以用.getClass()
: ("hi mom").getClass()
来反映它。IIRC,这将在正常情况下返回与String.class
完全相同的对象,因为每个类只有一个Class
对象(每个使用的ClassLoader
)。
如何在Java反射API中实现?
每次加载类的字节码时,都会创建一个class对象并与该字节码相关联。每个对象在概念上都保留了对代表其类的Class实例的"隐藏"引用,该引用由构造函数自动设置。类对象将此引用设置为表示Class类的Class对象。特别是,表示Class类的Class对象有一个对本身的引用。
can I apprehend it as returning a Class object that represent the run time class of Class object itself?
。Object.class.getClass() is same as Class.class.getClass()
.
System.out.println(Object.class.getClass() == Class.class.getClass()); // true