Я реализовал hashCode()
и equals()
для объекта, использующего значение по умолчанию из NetBeans:
@Override
public int hashCode() {
int hash = 5;
hash = 37 * hash + this.unitSystemID;
return hash;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
LOGGER.debug(getClass().toString());
LOGGER.debug(this.getClass().getClassLoader().toString());
LOGGER.debug(obj.getClass().toString());
LOGGER.debug(obj.getClass().getClassLoader().toString());
if (getClass() != obj.getClass()) {
return false;
}
final UnitSystem other = (UnitSystem) obj;
if (this.unitSystemID != other.unitSystemID) {
return false;
}
return true;
}
На контрольных точках регистрации я получаю:
units.UnitSystem - класс com.utilities.domain.units.UnitSystem
units.UnitSystem - org.springframework.boot.devtools.restart.classloader.RestartClassLoader@42d353e2
unit.UnitSystem - классcom.utilities.domain.units.UnitSystem _ $$ _ jvst6b1_19ed
units.UnitSystem - org.springframework.boot.devtools.restart.classloader.RestartClassLoader@42d353e2
1017 при *1016* 1017 приэта точка и
equals
возвращает ложь.
Что такое дополнительные _$$_jvst6b1_19ed
?Откуда это взялось?
Из того, что я понимаю, классы должны быть равными, если они принадлежат одному и тому же загрузчику классов.У меня не было проблем с этой реализацией где-либо еще, я использовал ее.Почему getClass()
возвращает разные вещи?