public class Person {
private String name;
public Person(String name) { this.name = name; }
public boolean equals(Person p) {
return p.name.equals(this.name);
}
}
Which statement is true?
A. The equals method does NOT properly override the Object.equals method.
B. Compilation fails because the private attribute p.name cannot be accessed in line 5.
C. To work correctly with hash-based data structures, this class must also implement the
hashCode method.
D. When adding Person objects to a java.util.Set collection, the equals method in line 4 will
prevent duplicates.
Answer: A
This is a question from a mock exam, I am preparing for ocjp 6 and I have doubts as to the option C. It says "to work correctly", so doesn't that imply needing to overwrite the hashcode? Although not overwriting hashcode() would work, I am focusing on the word CORRECTLY!!!
equalsis not implemented correctly and vice-versa.