将自定义类对象传递给Java中的泛型类型

时间:2016-03-20 05:23:13

标签: java generics

我有一个带有两个泛型类型变量T和E的类如下:

onPause

我要在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的自定义对象。为什么这样 !!我怎样才能实现这个功能?

2 个答案:

答案 0 :(得分:1)

您对声明有疑问:

AdjacencyList<GraphVertex<T,E>, GraphVertex<T,E>> a = new AdjacencyList<>();

您需要使用具体类替换T和E,而不是使用模板参数。

BTW:看看Map界面中的新computeIfAbsent方法......

答案 1 :(得分:0)

看起来您应该写a.addToList(1, 3)或使用AdjacencyList<GraphVertex, GraphVertex>。现在你的顶点是整数,你需要传递整数。