java.lang.UnsupportedOperationException가 발생한다.
public class Sections {
private List<Section> sections = new ArrayList<>();
public Sections() {
}
public Sections(List<Section> sections) {
this.sections = sections;
}
public void addSection(Section section) {
sections.add(section);
}
}
@BeforeEach
void setUp() {
//1. UnSupportOperation 발생 안함.
List<Section> sectionInputs = new ArrayList<>();
sectionInputs.add(SECTION);
sections = new Sections(sectionInputs);
//2. 발생함
sections = new Sections(Arrays.asList(SECTION));
//3. 발생함
sections = new Sections(Collections.singletonList(SECTION));
}
@Test
@DisplayName("새로운 구간을 추가한다.")
void addSection() {
sections.addSection(SECTION_FOR_ADD);
}
Arrays.asList(), Collections.singletonList, Collections.EMPTY_LIST, List.of 는 모두 unmodifiable List이므로 불변 리스트하다.
따라서 add 요청이 들어왔을 때 예외를 뱉는 것!!!!!
new ArrayList<>()로 초기화해주는 방법을 통해 UnsupportedOperationException를 해결할 수 있다.
위와 같이 불변 리스트를 이용하지 않았는데도 이 예외가 발생한다면, 아마 그 리스트를 초기화해주지 않았을 것이다.
끗
참고 자료
https://kim-jong-hyun.tistory.com/31
Special Thanks to 댓글