当调用Class.class.getClass()时,底层发生了什么?



这并不难理解String.class.getClass(),它的意思是返回一个

类对象,它代表String Object的运行时类。但是在调用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

相关内容

  • 没有找到相关文章

最新更新