我有以下代码:
import java.util.*;
class A {
int x;
A() { x = 0; }
A(int t) { x = t; }
public int hashCode() { return x; }
public boolean equals(A that) { return x == that.x; }
}
class Test {
static HashMap<A, Integer> stuff;
public static void main(String[] args) {
stuff = new HashMap<A,Integer>();
A a = new A(1);
stuff.put(a, 100);
System.out.println(stuff.get(a).toString());
System.out.println(stuff.get(new A(1)).toString());
}
}
为什么第二个印刷语句会给我一个NullPointerException
?
答案 0 :(得分:16)
你没有凌驾于equals()
。正确的签名是
public boolean equals(Object o)
^^^^^^
请注意,类型为Object
,而非A
。你做的是重载equals()
。