我必须创建一个类来继承 Hashcode,并且需要重写 contains 方法。
@Override
public boolean contains(Object value) {
if (!this.containsValue(value))
return true;
return false;
}
public void add(Object key, Object value) {
if (!this.contains(value)) {
this.put(key, value);
}
}
编译得很好,但是当我运行它时,我得到了 StackOverflowError。我想我得到了一些递归无限循环,但我无法弄清楚。欢迎任何帮助! printscreen of the error
最佳答案
您正在 contains
内部调用 containsValue
,但查看 HashTable
中的代码,您可以看到 containsValue
将再次调用 contains
,这将重复,直到出现堆栈溢出...
在HashTable.class中
public boolean containsValue(Object value) {
return contains(value);
}
你真的应该这样做
@Override
public boolean contains(Object value) {
if (!super.contains(value))
return true;
return false;
}
或者干脆不要覆盖contains
,因为这已经在执行您要重新实现的操作。
关于java - 重写 Hashtable.contains() java 时出现 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563516/