编写给定类型T和整数n的方法的最佳方法是什么,返回n个新创建的类型为T的对象的列表。是否可以将构造函数作为参数传递或者我必须在其他方式?
想到这样的事情
public <T> ArrayList<Object> generate(T type, int amount){
ArrayList<Object> objects = new ArrayList();
for (int i = 0; i < amount; i ++){
objects.add(new bla bla)...
}
答案 0 :(得分:2)
使用通用方法。
public <T> List<T> getList(Class<T> clazz, int size) throws InstantiationException, IllegalAccessException{
List<T> list = new ArrayList<T>();
for(int x = 0; x < size; x++){
list.add(clazz.newInstance());
}
return list;
}
注意:这仅适用于具有默认构造函数的对象。如果要创建不包含默认构造函数的List
个对象,则必须使用反射来选择适当的构造函数。
答案 1 :(得分:0)
public static <T> List<T> generate(Class<T> clazz, int amount) {
ArrayList<Object> objects = new ArrayList();
for (int i = 0; i < amount; i ++){
objects.add(clazz.newInstance());
}
return list;
}
上面的代码实际上尝试使用默认构造函数。如果需要,可以将反射引用传递给您选择的相应构造函数。可以通过调用Class.getConstructors()
来获取构造函数列表。
然后你的代码看起来像这样:
public static <T> List<T> generate(Constructor<T> constructor, int amount) {
ArrayList<Object> objects = new ArrayList();
for (int i = 0; i < amount; i ++){
objects.add(constructor.newInstance(param1, param2, ...)); // fill the arguments
}
return list;
}