创建未知数量的对象实例的有效方法
Efficient way to create unknown number of object instances
我需要创建多个 class 实例并将它们添加到一个数组中(我目前使用的是 ArrayList,但如果需要我可以更改它)。我需要对大约 20 个其他 classes 执行此操作,每个都有不同数量的实例。比为每个项目编写 for 循环更有效的方法是什么?
例如
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 [=] 的不同子 classes 21=].
我无法发表评论,所以我会 post 回复...反对编写 24 个不同循环的方法是从可以创建对象到数字的工厂映射对象。
类似
interface <T> IFactory {
T create();
}
然后每个 class 都有一个工厂。
Map<IFactory,Integer> factoryToNumOfInstances;
另一种选择是,如果这些 class 中的每一个都有一个默认的构造函数,并且您不使用任何泛型,那么您可以获得
的映射
Map<Class,Integer> classToNumOfInstances;
然后调用方法 newInstance();
clazz.newInstance();
我需要创建多个 class 实例并将它们添加到一个数组中(我目前使用的是 ArrayList,但如果需要我可以更改它)。我需要对大约 20 个其他 classes 执行此操作,每个都有不同数量的实例。比为每个项目编写 for 循环更有效的方法是什么?
例如
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 [=] 的不同子 classes 21=].
我无法发表评论,所以我会 post 回复...反对编写 24 个不同循环的方法是从可以创建对象到数字的工厂映射对象。
类似
interface <T> IFactory {
T create();
}
然后每个 class 都有一个工厂。
Map<IFactory,Integer> factoryToNumOfInstances;
另一种选择是,如果这些 class 中的每一个都有一个默认的构造函数,并且您不使用任何泛型,那么您可以获得
的映射Map<Class,Integer> classToNumOfInstances;
然后调用方法 newInstance();
clazz.newInstance();