实现通用接口时如何避免转换

时间:2015-02-12 10:44:11

标签: java generics casting wildcard

我正在做一些图形实现,我认为代码闻起来很糟糕。

所以我创建了一个界面Graph:

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.

1 个答案:

答案 0 :(得分:1)

您必须更改您的课程才能实施Graph<K, V>,而不仅仅是Graph

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

然后,您可以将KV用于您实施的方法&#39;参数。

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