2016-04-28 33 views
8

因此,它是有效的以這種方式檢查類的平等:Class類的實例是否保證每個類加載器都是單例?

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

} 

也許答案是肯定的,因爲Class類沒有覆蓋equals()所以它看起來像Object.equals()適用於類的平等。但是,如果這是其他地方記錄的話,我會感興趣。謝謝。

回答

6

參考JLS Section 12.2

乖巧的類加載器維護這些屬性:

  • 由於相同的名字,一個良好的類加載器應該總是返回相同的類對象。
  • ...

惡意的類加載器可能違反這些屬性。但是,它不能破壞類型系統的安全性,因爲Java虛擬機會對此進行防範。

因此,如果您的實例是由相同類加載器加載的類,則可以使用標識進行測試。

相關問題