我想我可能在这里遗漏了一些明显的东西,但无论如何让我们看看代码。
public static class FreeMap extends TreeMap<String, Integer> {
@Override
public Integer put(String key, Integer value) {
out.println(super.toString());
out.println(super.getClass().getName()+" "+key+" : "+value);
int i = super.put(key, value);//line 227
assert this.size() == 1;
return i;
}
}
public static void main(String[] args) {
FreeMap fm = new FreeMap();
fm.put("A", 10);
}
在运行此程序时,您将获得如下输出:
{}
com.xxxxxxxxxxxxxxxxxxxxxxxx.Graph$FreeMap A : 10
Exception in thread "main" java.lang.NullPointerException
at com.xxxxxxxxxxxxxxxxxxxxxxxx.Graph$FreeMap.put(Graph.java:227)
at com.xxxxxxxxxxxxxxxxxxxxxxxx.Graph.main(Graph.java:212)
我可以看到 super 指的是 FreeMap,而不是 TreeMap,如果它会引发我可以理解的 StackOverflow 异常。为什么是空指针异常?
提前致谢