SCJP 1.6版考題 210
出自 陳富國維基館
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? A. return super.hashCode(); B. return name.hashcode() + age * 7; C. return name.hashCode() + comment.hashCode() / 2; D. return name.hashCode() + comment.hashCode() / 2- age * 3;
解答
Ans: D
解說:
此題原本的流傳的答案為D,但照Larry大大說此題答案應為B,我想B才是對的, 理由是Person這個類別中有一個equals方法,此方法以類別中的name與age做為Person物件的equals比較, 也就是說二個Person物件是否相等 視其name與age 二個成員資料而定, 而hashCode做為一個物件的雜湊值計算應取 這2個成員資料來進行計算, 也就是說,equals和hashCode二者 應 以相同的 資料 進行運算。
|