So this is from Head First Java (page 563)
The default behaviour of hashCode() is to generate a unique integer for each object on the heap. So if you don’t override hashCode() in a class, no two objects of that type can EVER be considered equal.
But a simple Test will disprove this I think.
public class Song { private String name; public Song(String name) { this.name = name; } public String getName() { return name; } @Override public boolean equals(Object obj) { Song objectSong = (Song) obj; return this.getName().equals(objectSong.getName()); } } Well this will return true:
Song songA = new Song("A","B"); Song songB = new Song("A","C"); System.out.println(songA.equals(songB)); Am I missing something? What is it that the book is trying to tell me?