调用Class.class.getClass()时会发生什么?

did*_*xga 4 java reflection class

这不难理解String.class.getClass(),这意味着返回aClass Object,表示String Object的运行时类.但是在调用时会发生什么Class.class.getClass(),我可以将其理解为返回表示Class对象本身的运行时类的Class对象吗?如何在Java反射API中实现?

Kar*_*tel 5

一个Class对象,表示Class对象本身的运行时类?

是.

但是String.class.getClass()同样的事情.

String.class已经意味着"表示String类的类型的对象".调用.getClass()它意味着"表示Class类的Class类型的对象",因为我们在类型为Class的对象上调用它.

如果你有一个String对象,例如"hi mom",那么你可以用它来反映.getClass():("hi mom").getClass()例如.IIRC,这将返回与String.class正常情况下完全相同的对象,因为Class每个类只有一个对象(,每个ClassLoader使用中).

如何在Java反射API中实现?

每次加载类的字节码时,都会创建一个Class对象并将其与该字节码相关联.每个对象在概念上保持对表示其类的Class实例的"隐藏"引用,该实例由构造函数自动设置.类对象将此引用设置为表示Class类的Class对象.特别是,表示Class类的Class对象具有对自身的引用.