gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:11:03 27 4
gpt4 key购买 nike

我有一个带有两个泛型类型变量 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com