Multiple choice technology

Given: 11. public class Person { 12. private String name, comment; 13. private int age; 14. public Person(String n, int a, String c) { 15. name = n; age = a; comment = c; 16. } 17. public boolean equals(Object o) { 18. if (! (o instanceof Person)) return false; 19, Person p = (Person)o; 20. return age == p.age && name.equals(p.name); 21. } 22. } What is the appropriate definition of the hashCode method in class Person?

  1. return super.hashCode();

  2. return name.hashCode() + age * 7;

  3. return name.hashCode() + comment.hashCode() / 2;

  4. return name.hashCode() + comment.hashCode() / 2 - age * 3;

Reveal answer Fill a bubble to check yourself
B Correct answer
Explanation

The hashCode method must use the same fields as equals() to maintain the hashCode contract. The equals method compares age and name, so option B correctly uses only those fields. Options C and D incorrectly include 'comment' which is not part of equals comparison, violating the contract.