[英]StackOverflowError when overriding Hashtable.contains() java
我必須創建一個類來繼承 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。 我想我得到了一些遞歸無限循環,但我無法弄清楚。 歡迎任何幫助! 錯誤的打印屏幕
您在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
因為這已經在執行您正在重新實現的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.