ArrayList 的动态初始化

通常,如果我们想要初始化通用的非原始ArrayList,我们就这样做

ArrayList arrayList = new ArrayList(); 

但是无论我传递哪个类对象,我都想做类似的事情

 private void getModel(Class responseType){ //Something similar, because this does not work.. ArrayList arrayList = new ArrayList(); } 

任何帮助将不胜感激。

尝试这样的事情

  private  void setModel(Class type) { ArrayList arrayList = new ArrayList(); } 

如果你想回到那个列表

 private  ArrayList getModel(Class type) { ArrayList arrayList = new ArrayList(); return arrayList; } 

编辑

一个完整的例子显示如何使用ARRAYLIST的GENERIC TYPE

使用main方法和generics方法的Tester类

 public class Tester { private  ArrayList getModels(Class type) { ArrayList arrayList = new ArrayList(); return arrayList; } public static void main(String[] args) { Data data = new Data(12, "test_12"); Magic magic = new Magic(123, "test_123"); Tester t = new Tester(); ArrayList datas = (ArrayList) t.getModels(Data.class); datas.add(data); for(Data data2 : datas) { System.out.println(data2); } ArrayList magics = (ArrayList) t.getModels(Magic.class); magics.add(magic); for(Magic magic2 : magics) { System.out.println(magic2); } } } 

另一种可能在没有参数的情况下使用相同的东西,因为我们不在方法中使用它

 public class Tester { private  ArrayList getModel() { ArrayList arrayList = new ArrayList(); return arrayList; } public static void main(String[] args) { Data data = new Data(12, "test_12"); Magic magic = new Magic(123, "test_123"); Tester t = new Tester(); ArrayList datas = t.getModel(); datas.add(data); for(Data data2 : datas) { System.out.println(data2); } ArrayList magics = t.getModel(); magics.add(magic); for(Magic magic2 : magics) { System.out.println(magic2); } } } 

模型类(数据)

 public class Data { private Integer id; private String name; public Data() { } public Data(Integer id, String name) { super(); this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Data [" + (id != null ? "id=" + id + ", " : "") + (name != null ? "name=" + name : "") + "]"; } } 

模特类(魔术)

 public class Magic { private Integer id; private String name; public Magic() { } public Magic(Integer id, String name) { super(); this.id = id; this.name = name; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Data [" + (id != null ? "id=" + id + ", " : "") + (name != null ? "name=" + name : "") + "]"; } } 

这有效:

 private void getModel(){ ArrayList arrayList = new ArrayList(); } 

我的意思是,目前还不清楚你要做什么。 generics是纯粹的编译时间,用于执行编译时类型检查。 因此,如果在编译时未知类型参数,则它将是无用的。

尝试使用以下

 public  List getList(Class requiredType) { return new ArrayList(); } public void useList() { List ints = getList(Integer.class); List lists = getList(String.class); }