2016-04-07 5 views
-2

Другой вопрос из той же домашней работы:равно() и хэш-код() в Java

//attributes: 
public int identifikace; 
public String druh; 
public int vek; 
public Majitel majitel; 

//constructor: 
public Zvire(int identifikace, String druh, int vek, Majitel majitel){ 
    this.identifikace = identifikace; 
    this.druh = druh; 
    this.vek = vek; 
    this.majitel = majitel; 

Некоторые простые добытчиками и т.д. Теперь то, что я должен делать: «В классе Zvire, добавить методы Equals() и хэш-код() реализованы так, что два Zvire такие же, если они имеют одинаковый атрибут identifikace. " (не идеальный перевод, но вы, вероятно, получите смысл)

Я бы, вероятно, смог это выяснить, но я начинаю торопиться. Может ли кто-нибудь пропустить это очень просто?

спасибо!

+0

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

+0

В этом простом примере это не проблема, но: Начните давать переменные английским именам. Это облегчает другим людям читать и понимать ваш код! –

+0

Если мой ответ ниже достаточно хорош для вас, не стесняйтесь отмечать как лучший ответ, thx заранее –

ответ

3

Попросите вашего IDE, чтобы сделать это для вас, вот что вы получаете от IntelliJ:

@Override 
public boolean equals(final Object o) { 
    if (this == o) return true; 
    if (o == null || this.getClass() != o.getClass()) return false; 
    final Zvire zvire = (Zvire) o; 
    return this.identifikace == zvire.identifikace; 
} 

@Override 
public int hashCode() { 
    return Objects.hash(this.identifikace); 
} 
+3

... но это требует нажатия трех клавиш ...;) +1 –

+0

@PeterLawrey lol –

+0

@Nicolas Don ' смеяться. Некоторые программисты устарели и больше не имеют эластичных пальцев. – Martin

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