我在论坛中搜索过,我理解getClass()
会返回一个参考
但它是一个特殊的引用,每次调用getClass
都会返回给定类的完全相同的引用。这意味着我们可以使用“==”而不是“equals”来比较它们。
我想知道每次创建和返回此特殊引用以及每次返回的方式
答案 0 :(得分:1)
每个类的Class
对象是一个单例。这意味着它的编写方式是每个类只存在一个Class
对象。
答案 1 :(得分:0)
答案 2 :(得分:0)
A.R。,我怀疑您将Class
对象与该类对象的实例混淆。它们不一样。
每种Java类型只有一个Class
对象。 getClass
返回对该Class
对象的引用。因为只有一个这样的对象,所有对它的引用都是相同的,==
有效。第一次使用时ClassLoader
加载类对象。没有人必须“创建”它的引用。它坐在那里,在记忆中,可以参考。正如@JoeC指出的那样,它是一个单身人士。 BAM!
给定类可能有许多实例。每个独立实例都有自己的状态,不与任何其他实例共享。作为其状态的一部分,每个实例具有的一个事物是对其Class
的引用。当然,该引用与该类的每个其他实例中的引用相同。它们是==
!
已编辑添加:了解Class
个对象本身就是Class<?>
类型的实例可能会有所帮助。可能有很多String
但只有Class<String>
的一个实例,其类型(类)为Class<?>
。