构建者 - 每次都创建一个新实例?

时间:2015-06-02 17:53:13

标签: android builder

我正在使用几个构建器来制作一堆对象。我现在正在做的是:

List<ProductofBuilder> list;
Builder b = new Builder();

for(some iterable i in I) {
    b.setSomeParam(i);
    list.add(b.build());
}

这可以吗?换句话说,构建器是否每个ProductOfBuilder创建一个build()的新实例?

2 个答案:

答案 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());
    }

在调试器中给出以下结果。

enter image description here

因此它们都有唯一的内存地址,每个地址都有唯一的reportDelay。