建设者 - 每次都创建一个新实例?
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。
我正在使用几个生成器来制作一堆对象。我目前正在做的是:
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。