我有一个带有两个泛型类型变量 T 和 E 的类,如下所示:
public class AdjacencyList<T,E> {
HashMap<T, LinkedList<E>> adj =
new HashMap<T, LinkedList<E>>();
void addToList(T source, E dest){
if(adj.containsKey(source)){
LinkedList<E> list = adj.get(source);
list.add(dest);
}
else{
LinkedList<E> list = new LinkedList<E>();
list.add(dest);
adj.put(source, list);
}
}
}
还有一个自定义类,我想将其对象添加到 AdjacencyList
中:
public class GraphVertex<T,E> {
T name;
boolean visited;
ArrayList<GraphVertex<T, E>> neighbors;
Color color;
}
GraphTraversals
是我想要将 GraphVertex
的对象添加到 AdjacencyList
的类(在方法 createAdjList
中) >)如下:
public class GraphTraversals {
public static void main(String[] args) {
AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a = new AdjacencyList<>();
GraphTraversals g = new GraphTraversals();
g.createAdjList(a);
}
<T,E> void createAdjList(AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a){
a.addToList(createAVertex(1), createAVertex(3));
}
}
但是AdjacencyList
的泛型类型不支持GraphVertex
的自定义对象。为什么这样 !!我怎样才能实现这个功能?
最佳答案
您对声明有疑问:
AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a = new AdjacencyList<>();
您需要将 T 和 E 替换为具体的类,而不是使用模板参数。
顺便说一句:看看 Map 界面中新的computeIfAbsent-方法...
关于java - 将自定义类对象传递给 Java 中的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110518/