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

Builders - creates a new instance each time?

我正在使用几个生成器来制作一堆对象。我目前正在做的是:

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

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

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

Is this okay to do? In other words, does a builder create a new instance of ProductOfBuilder each

不,不是。根据您发布的代码,您总是在更改相同的参考。最后,您的列表将包含 n 个构建器,其中包含最后一次调用 setSomeParam 的内容。

如果您有 Collection 个构建器应该构建的对象,并且您在每次迭代时调用 build()

,情况就不同了
List<TypeToBuild> list;
TypeToBuild.Bilder builder;
for (Type t : parmas) {
   builder.setParamns(t);
   list.add(builder.build());
 }

所以我每次都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。