gpt4 book ai didi

java - 将类类型作为参数传递以在 ArrayList 中使用?

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:03 24 4
gpt4 key购买 nike

我需要编写一个 java 方法,它接受一个类(而不是一个对象),然后用该类创建一个 ArrayList 作为数组中每个成员的元素。伪代码示例:

public void insertData(String className, String fileName) {
ArrayList<className> newList = new ArrayList<className>();
}

我如何在 Java 中完成此操作?

最佳答案

您可以使用 Generic methods

public <T> void insertData(Class<T> clazz, String fileName) {
List<T> newList = new ArrayList<>();
}

但是如果您应该使用此协定 insertData(String className, String fileName),则不能使用泛型,因为 Java 无法在编译时解析列表项的类型。

在这种情况下,您可以根本不使用泛型,而是在将类型放入列表之前使用反射来检查类型:

public void insertData(String className, String fileName) {
List newList = new ArrayList();

Class clazz;
try {
clazz = Class.forName(className);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e); // provide proper handling of ClassNotFoundException
}

Object a1 = getSomeObjectFromSomewhere();

if (clazz.isInstance(a1)) {
newList.add(a1);
}
// some additional code
}

但如果没有类信息,您只能使用 Object,因为您无法在代码中将对象转换为 UnknownClass。

关于java - 将类类型作为参数传递以在 ArrayList 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42069745/

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