При переопределении функции equals() объекта java.lang.Object javadocs предполагают, что
как правило, необходимо переопределять метод hashCode всякий раз, когда этот метод переопределяется, чтобы поддерживать общий контракт для метода hashCode, который утверждает, что равные объекты должны иметь одинаковые хэш-коды.
Метод hashCode() должен возвращать уникальное целое число для каждого объекта (это легко сделать при сравнении объектов на основе расположения памяти, просто верните уникальный целочисленный адрес объекта)
Как следует переопределить метод hashCode(), чтобы он возвращал уникальное целое число для каждого объекта, основываясь только на свойствах этого объекта?
public class People{
public String name;
public int age;
public int hashCode(){
// How to get a unique integer based on name and age?
}
}
/*******************************/
public class App{
public static void main( String args[] ){
People mike = new People();
People melissa = new People();
mike.name = "mike";
mike.age = 23;
melissa.name = "melissa";
melissa.age = 24;
System.out.println( mike.hasCode() ); // output?
System.out.println( melissa.hashCode(); // output?
}
}