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

时间:2016-04-28 10:55:34

标签: java

以这种方式检查类相等是否有效:

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

}

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

1 个答案:

答案 0 :(得分:6)

请参阅JLS Section 12.2

  

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

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

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

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