2016-04-28 2 views
8

Так оно действует для проверки класса равенства следующим образом:Являются ли экземпляры класса класса единичными для каждого загрузчика классов?

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

} 

Вероятно, ответ да, потому что класс Class не отменяет equals() поэтому он выглядит как Object.equals() относится к классу равенства. Но мне было бы интересно, если это задокументировано в другом месте. Благодарю.

ответ

6

См JLS Section 12.2:

выдрессированный загрузчики классов поддерживать эти свойства:

  • Учитывая то же имя, хороший загрузчик класса должен всегда возвращать один и тот же объект класса.
  • ...

Загрузчик классов вредоносных может нарушить эти свойства. Однако это не может подорвать безопасность системы типов, поскольку виртуальная машина Java защищает это.

Итак, если ваши экземпляры классов, загружаемых одним и тем же загрузчиком классов, вы можете протестировать, используя идентификатор.

Смежные вопросы