gpt4 book ai didi

java - 在 Java 泛型中创建类型对象

转载 作者:行者123 更新时间:2023-11-30 06:14:28 24 4
gpt4 key购买 nike

我们可以在像 T t = new T(); 这样的 Java 泛型中创建一个 Type 类对象吗?

这是我的代码,

public class Graph<T extends NeighbourInt<T>> {

Map<String, List<T>> adjecencyList;

public Graph() {
adjecencyList = new HashMap<>();
}

public void addEdge(String vertex1, String vertex2, int weight) {
if (adjecencyList.containsKey(vertex1)) {
List<T> neg = adjecencyList.get(vertex1);
neg.add(new T (vertex2, weight));
} else {
List<T> neg = new ArrayList<>();
neg.add(new T(vertex2, weight));
adjecencyList.put(vertex1, neg);
}
}
}

My NeighbourInt 接口(interface)

public interface NeighbourInt<T> extends Comparable<T> {

public String getVertex();

public void setVertex(String vertex);

public int getWeight();

public void setWeight(int weight);

}

有没有可能的方法来启动像 new T(); 这样的对象?在 Java 泛型中?

最佳答案

不,还没有(再次因为删除)

但是,Graph 的构造函数可以接收一个从 (String,int) 创建 T 的生成器;当你需要创建一个新的 T 时调用这个生成器。

在 java 8 中,你可以这样做

public Graph( BiFunction<String,Integer,T> generator )

当你需要创建一个T时,执行generator.apply(string,integer)

假设您在 NeighbourInt 的子类型中有一个构造函数

public Foo(String, int)

你可以做到

new Graph<>( Foo::new )

关于java - 在 Java 泛型中创建类型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30312318/

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