我正在使用几个构建器来制作一堆对象。我现在正在做的是:
List<ProductofBuilder> list;
Builder b = new Builder();
for(some iterable i in I) {
b.setSomeParam(i);
list.add(b.build());
}
这可以吗?换句话说,构建器是否每个ProductOfBuilder
创建一个build()
的新实例?
答案 0 :(得分:2)
这可以吗?换句话说,构建器是否创建了新的 每个ProductOfBuilder的实例
不,不是。根据您发布的代码,您总是更改相同的参考。最后,您的列表将包含n个构建器,其中包含上次调用setSomeParam
的内容。
如果构建器应该构建Collection
个对象,并且每次迭代都调用build()
,则会有所不同。
List<TypeToBuild> list;
TypeToBuild.Bilder builder;
for (Type t : parmas) {
builder.setParamns(t);
list.add(builder.build());
}
答案 1 :(得分:0)
所以我在每次build
的问题上并不完全清楚。对不起。
运行此代码:
ArrayList<ScanSettings> list = new ArrayList<>();
ScanSettings.Builder b = new ScanSettings.Builder();
for (int i = 0; i < 10; i++) {
b.setReportDelay(i * 100);
list.add(b.build());
}
在调试器中给出以下结果。
因此它们都有唯一的内存地址,每个地址都有唯一的reportDelay。