gpt4 book ai didi

java - 如何将新实例添加到通用列表?

转载 作者:行者123 更新时间:2023-12-01 18:29:43 25 4
gpt4 key购买 nike

有一个程序可以处理多种类型的列表(人、猫、椅子等)。

下面的代码在代码中多次出现。该代码用 Cat 类型的实例填充给定列表,直到该列表具有给定数量的实例。

int howMany = max - cats.size(); 
for(int i = 0; i < howMany; ++i) {
cats.add(new Cat());
}

由于此代码出现多次,我们希望创建一个方法来替换它。该方法将接受我们想要添加实例的List以及实例的max数量。如果需要,它可以接受更多参数。

一开始这看起来很简单,但后来我想起由于类型删除,不可能编写 new T()

还有什么其他方法可以实现这一目标?

最佳答案

您可以重复使用实例化给定类型的类的方法 T .

public T getInstanceOfT(Class<T> aClass) {
return aClass.newInstance();
}

然后,您可以实现一个方法,填充给定的 List<T>n T 类型的对象.

public <T> void populateList(List<T> list, Class<T> clazz, int n) {
for (int i = 0; i < n; i++) {
list.add(getInstanceOfT(clazz));
}
}

注1:您必须处理 IllegalAccessExceptionInstatiationException .

注意2:如果您不想使用getInstanceOfT()你可以这样做clazz.newInstance()添加到列表时。

您可以使用如下方法:

int howMany = max - cats.size(); 
Class<Cat> catClass = Cat.class;
List<Cat> listOfCats = new ArrayList<Cat>();
populateList(listOfCats, Cats.class, howMany);

更多信息:

关于java - 如何将新实例添加到通用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24829111/

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