创建未知数量的对象实例的有效方法

时间:2016-03-29 14:14:13

标签: java class instance instantiation

我需要创建一个类的多个实例并将它们添加到一个数组中(我目前正在使用ArrayList,但如果需要我可以更改它)。我需要为大约20个其他类执行此操作,每个类具有不同的实例数量。什么是更有效的方法,而不是为每个项目编写for循环?

e.g。

  ArrayList<Tile> bag = new ArrayList<Tile>();
  num_tile_a = 10;
  num_tile_b = 6;
  num_tile_c = 4;
  num_tile_d = 8;

  for (int i = 0; i < num_foo; i++){
      bag.add(new Tile_a());
  ....

编辑:在这个例子中,Tile_a,Tile_b,Tile_c和Tile_d都是Tile类的不同子类。

1 个答案:

答案 0 :(得分:3)

我无法发表评论所以我发布回复...反对编写24个不同循环的方法是从工厂创建一个可以创建对象到对象数量的地图

这样的东西
interface <T> IFactory {
 T create();
}

然后为每个班级设立工厂。

Map<IFactory,Integer> factoryToNumOfInstances;

另一种选择是,如果这些类中的每一个都有默认的构造函数,并且您没有使用任何泛型,那么您可以拥有

的地图
Map<Class,Integer> classToNumOfInstances;

然后调用方法newInstance();

clazz.newInstance();