gpt4 book ai didi

java - 调用 Class.class.getClass() 时到底发生了什么?

转载 作者:搜寻专家 更新时间:2023-11-01 02:15:45 25 4
gpt4 key购买 nike

String.class.getClass()不难理解,就是返回一个Class Object,表示String Object的运行时类。但是当调用 Class.class.getClass() 时发生了什么,我是否可以将其理解为返回一个代表 Class 对象本身的运行时类的 Class 对象?这如何在 Java 反射 API 中实现?

最佳答案

a Class object that represent the run time class of Class object itself?

是的。

但是 String.class.getClass() 是一回事。

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

如果您有一个字符串对象,例如“hi mom”,那么您可以使用 .getClass() 反射(reflect)它:("hi mom").getClass( ) 例如。 IIRC,在正常情况下,这将返回与 String.class 完全相同的对象,因为每个类只有一个 Class 对象(每个 ClassLoader 使用中)。

How can this be implemented in Java reflection API?

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

关于java - 调用 Class.class.getClass() 时到底发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6622167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com