Class类的实例是否保证是每个类加载器的单例?

Naz*_* K. 8 java

因此,以这种方式检查类的相同性是否有效:

if (object.getClass() == anotherObject.getClass()) {

}
Run Code Online (Sandbox Code Playgroud)

可能答案是肯定的,因为Class类没有覆盖equals()所以看起来它Object.equals()适用于Class的相等性.但是,如果在其他地方记录下来,我会感兴趣.谢谢.

And*_*ner 6

参见JLS第12.2节:

性能良好的类加载器维护这些属性:

  • 给定相同的名称,一个好的类加载器应该总是返回相同的类对象.
  • ...

恶意类加载器可能违反这些属性.但是,它不能破坏类型系统的安全性,因为Java虚拟机可以防范这种情况.

因此,如果您的实例是由同一个类加载器加载的类,则可以使用标识进行测试.