[英]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>
然后,您可以將K
和V
用作已實現方法的參數。
@Override
public void addVertex(K key, V value) {
// TODO Auto-generated method stub
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.