Как вы можете получить ссылку на родительский объект объекта в Java?

Я пытался реализовать метод hashCode и класс, у которого есть родительский элемент, с помощью метода Objects.hash ().

public int hashCode() {
    return Objects.hash(super, attribute1);
}

Я предполагаю, что для создания хэш-кода я должен учитывать родителя (так же, как вы должны проверять родительский элемент при реализации равенства).

Оказывается, метод Objects.hash является объектом, но super - зарезервированным словом.

Я знаю, что это можно реализовать с помощью других обходных путей, но есть ли способ вызвать метод Objects.hash () со ссылкой на родителя?


person Diego Rosado    schedule 09.12.2014    source источник
comment
возможно Objects.hash(super.hashCode())   -  person Andrei Sfat    schedule 09.12.2014
comment
Я предполагаю, что это поместит super.hashCode () в объект Integer и будет использовать его в качестве аргумента метода Objects.hash (). Это сработает, но вопрос останется без ответа. Как я могу получить ссылку на родительский объект?   -  person Diego Rosado    schedule 09.12.2014
comment
@DiegoRosado: Родительского объекта не существует. Есть только текущий объект, на который указывает this. super просто обращается к this, члены которого ищут по-другому.   -  person newacct    schedule 10.12.2014
comment
Спасибо @newacct. Думаю, теперь у меня есть лучшая картина.   -  person Diego Rosado    schedule 10.12.2014


Ответы (1)


Не существует такого понятия, как «родительский объект». this - текущий экземпляр. Не уверен, что вы здесь пытаетесь сделать, но сомневаюсь, что вам это тоже нужно.

В вашем примере достаточно attribute1.hashCode(). Или, если у вас более одного атрибута, Objects.hash(attribute1, attribute2, attribute3, ...)

person Dima    schedule 09.12.2014