簡體   English   中英

覆蓋Hashtable.contains() java時出現StackOverflowError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM