我需要编写一个 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/