Я пытаюсь добавить элементы в ArrayList<Movements>movement
как часть шаблона построителя.Добавление элементов в ArrayList с использованием шаблона builder в Java
Класс Movement содержит int movementId
и String movementName
, и я хотел бы, чтобы пользователь добавил их в композицию, используя шаблон строителя.
Я борюсь с реализацией, смотрите ниже:
public static class CompositionBuilder{
private final String compositionId;
private List<Movements> movement = new ArrayList<Movements>();
private final String compositionName;
private final String composerName;
public CompositionBuilder(String compositionId, String compositionName, String composerName){
this.compositionId = compositionId;
this.compositionName = compositionName;
this.composerName = composerName;
}
//this part is where I am struggling. I don't know how to populate the ArrayList
public CompositionBuilder movement(Movements...movement){
for (Movements i : movement){
this.movement.add(i);
}
return this;
}
public Composition build(){
return new Composition(this);
}
}
Я хочу, чтобы иметь возможность построить композицию, используя
public class CompositionBuilderTest {
public static void main (String[] args){
Composition composition1 = new Composition.CompositionBuilder("1", "CompositionOne", "John Doe")
.movement()//enter movement values here
.build();
System.out.println(composition1);
}
}
Состав Constructor:
private Composition(CompositionBuilder builder){
this.compositionId = builder.compositionId;
this.movement = builder.movement;
this.compositionName = builder.compositionName;
this.composerName = builder.composerName;
}
Какие проблемы вы видите с реализацией? – nomis
В 'CompositionBuilderTest' я хочу ввести' движение (motionId, movementName) '. Это не работает. Я также не думаю, что аргумент переменной длины правильный в 'CompositionBuilder движении', но я не могу понять альтернативу. – Mac
@macattack Вам нужно будет вызвать конструктор 'Movements':' motion (new Movements (motionId, motionName)) ' –