2015-06-02 4 views
2

Я использую пару Строителей, чтобы создать кучу объектов. Что я сейчас делаю, так это:Builders - каждый раз создается новый экземпляр?

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

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

Это нормально? Другими словами, делает ли строитель новый экземпляр ProductOfBuilder каждый build()?

+0

Я не вижу никаких проблем здесь –

ответ

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 тоже.

2

Это нормально? Другими словами, делает ли строитель новый экземпляр ProductOfBuilder каждый

Нет, это не так. В соответствии с введенным вами кодом вы всегда меняете одну и ту же ссылку. В конце ваш список будет содержать n строителя, с содержанием последнего звонка до setSomeParam.

Иное, если у вас есть Collection объектов, которые предполагается построить строителю, и вы вызываете на каждой итерации build().

List<TypeToBuild> list; 
TypeToBuild.Bilder builder; 
for (Type t : parmas) { 
    builder.setParamns(t); 
    list.add(builder.build()); 
} 
+0

штопать его. Хорошо, спасибо! – Jeeter

+0

добро пожаловать – Blackbelt

+0

Так что я действительно протестировал код, и это работает нормально. См. Мой ответ – Jeeter

Смежные вопросы