我想使用java泛型来实现这样的函数:
public class Test<T> {
public T data;
public Test() {
data = new T();
}
}
但是java编译报告错误如“无法实例化类型T”,如何在java中实现这个功能?
答案 0 :(得分:4)
你需要班级
public Test(Class<? extends T> klass) {
data = klass.newInstance();
}
答案 1 :(得分:2)
可能的解决方案是为Supplier
提供T
或工厂。
public class Test<T>{
public T data;
public Test(Supplier<T> supplier){
data = supplier.get();
}
// or
public Test(T t){
data = t;
}
}
答案 2 :(得分:1)