簡體   English   中英

實現通用接口時如何避免轉換

[英]how to avoid casting when implementing generic interface

我正在做一些圖形實現,我認為代碼聞起來很糟。

所以我做了一個接口圖:

interface Graph <K extends  Comparable <K>  , V>

例如,具有這樣的方法:

public void addVertex(K key, V value);

要么

public boolean remove (K key);

這些實現將包含基於鍵值對的頂點。

然后我做了一個實際的課:

public class AdjacencyList <K extends  Comparable <K>  , V>  implements Graph

是什么使我上面提到的方法變成這樣:

public void addVertex(Comparable key, Object value){/*rest of the code*/}
public boolean remove(Comparable K){/*rest of the code*/}

這些當然讓我做了很多精鑄。

我只是在學習通配符,從頭開始,在這里閱讀一些問題,但是我仍然感到困惑,為什么我的代碼會像這樣表現,更重要的是,為什么這樣的事情才是使之整潔的正確方法,以及使方法參數回到K和V。

您必須更改類以實現Graph<K, V>而不是Graph

public class AdjacencyList <K extends Comparable<K>, V>  implements Graph<K, V>

然后,您可以將KV用作已實現方法的參數。

@Override
public void addVertex(K key, V value) {
    // TODO Auto-generated method stub
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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