gpt4 book ai didi

java - 泛型和类,在构造函数中决定子类

转载 作者:行者123 更新时间:2023-11-30 07:16:54 27 4
gpt4 key购买 nike

我希望能够让我的(其中一个)构造函数决定它要使用的列表实现。我想出的代码编译得很好,没有警告,但 IDE (eclipse) 在注释行上提示,为什么以及如何推断类型?

public class GenericClassTest<T> {

private List<T> list;

//stuff...

public GenericClassTest(Class<? extends List> listCreator)
throws InstantiationException, IllegalAccessException {
this.list = listCreator.newInstance(); // how to infer type T? where
// does diamondoperator go?
}

public static void main(String[] args) throws InstantiationException,
IllegalAccessException {
GenericClassTest<Integer> one = new GenericClassTest<>(ArrayList.class);
GenericClassTest<String> two = new GenericClassTest<>(LinkedList.class);
one.list.add(13);
two.list.add("Hello");
System.out.println(one.list);
System.out.println(two.list);
}


}

最佳答案

你真的不需要。请记住 type-erasure将取代 TObject无论如何在运行时。所以在运行时你总是有一个 List<Object> .因此,T 是否真的无关紧要。是构造调用的一部分,因为它无论如何都会被忽略。泛型是编译时的便利,它们在运行时不会做很多事情。

关于java - 泛型和类,在构造函数中决定子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16565004/

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