java – Object.getClass()方法的签名
发布时间:2020-12-15 08:34:28 所属栏目:Java 来源:网络整理
导读:Object类包含以下方法: public final Class? extends Object getClass(). 为什么这个方法的返回类型是Class? extends Object 解决方法 因为Java缺少 self types.(如果它有它们,那么返回类型将是Class?extends self_type).所以签名只是声明了Class?,它可
Object类包含以下方法:
public final Class<? extends Object> getClass(). 为什么这个方法的返回类型是Class<? extends Object> 解决方法
因为Java缺少
self types.(如果它有它们,那么返回类型将是Class<?extends self_type>).所以签名只是声明了Class<?>,它可以做的最好的(下一个),这是不太理想的 – 编译器肯定知道getClass()不返回任何类,而是一个类,它是一个子类型调用getClass()的表达式的静态类型.
因此,我们有这种奇点,其中方法的签名声明Class<?>由于语言的限制,但编译器将返回值视为Class<?扩展TheClass>因为它知道它是安全的,并希望有所帮助:) PS:你看过Class<? extends Object>因为您在静态类型为Object的表达式上调用了getClass(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |