У меня есть уровни классов, которые объявлены hashMap.HashMap возвращает NULL
public class Levels{
private final Map<Unit, Object1> rateUnitCost;
public Levels(Map<Unit, Object1> levels) {
this.rateUnitCost = new HashMap<Unit, Object1>(levels);
}
public Object1 getCoverageLevel(Unit unit, Phase aP) {
return rateUnitCost.get(unit);
}
}
Я зову getCoverageLevel() метод из другого класса, и я инстанцирование rateUnitCost собственности Уровни класса, а из другого класса.
Когда вы видите в отладчике, я нахожу это значение для объекта rateUnitCost и объекта unit. rateUnitCost: - Hash Карта Значения
rateUnitCost HashMap<K,V> (id=1248)
[0] HashMap$Node<K,V> (id=1266)
key >Unit (id=1249)
amount Money (id=1267)
flags ArrayList<E> (id=1268)
procedureId 7156
ParticipationId 104152413
value >Object1 (id=1250)
Теперь значение единичного объекта ниже: -
unit Unit (id=1251)
amount Money (id=1258)
flags ArrayList<E> (id=1259)
procedureId 7156
ParticipationId 104152413
когда я совпадает со значением ключа с этим объектом, то его согласование. Но во время rateUnitCost.get (unit) возвращается значение null, даже если установлен Object1. Объект1 возвращается из другого класса, используя следующую строку: -
return new Object1();
Может ли кто-нибудь помочь мне разрешить эту тайну.
BasicUnit - это класс, который реализует интерфейс Unit. BasicUnit есть равно метод, как показано ниже: -
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
BasicUnit basicUnit = (BasicUnit) o;
if (flags != basicUnit.flags) return false;
if (procedureId != basicUnit.procedureId) return false;
if (ParticipationId != basicUnit.ParticipationId) return false;
if (amount != null ? !amount.equals(basicUnit.amount) : basicUnit.amount != null) return false;
return true;
}
и HashCode: -
public int hashCode() {
int result = procedureId;
result = 31 * result + ParticipationId;
result = 31 * result + (amount != null ? amount.hashCode() : 0);
result = 31 * result + (flags == null ? null : flags.hashCode());
return result;
}
@Manish: Не могли бы вы вставить детали реализации класса Unit? Поскольку Map обрабатывается на основе hashkey. –
@PrakashBhagat Unit только интерфейс общедоступный интерфейс Блок расширяет Comparable { } –
Тогда PLS паста класса реализации деталей. –