public class Person {
private String name, comment;
private int age;
public Person(String n, int a, String c) {
name = n;
age = a;
comment = c;
}
public boolean equals(Object o) {
if (!(o instanceof Person))
return false;
Person p = (Person) o;
return age == p.age && name.equals(p.name);
}
}
人类类(Person)中hashCode方法的恰当定义是什么?
A. 返回super.hashCode();
B. 返回name.hashCode() + age * 7;
C. 返回name.hashCode() + comment.hashCode() / 2;
D. 返回name.hashCode() + comment.hashCode() / 2 - age * 3;
答案是 B。
有人可以解释一下为什么 C 和 D 是错误的吗?