블랙잭 미션을 하다가 List.copyof()를 사용했었는데, List.of()와의 차이점이 무엇인지에 대해 알고자 작성하게 되었다.
copyOf()
Returns an unmodifiable List containing the elements of the given Collection, in its iteration order. The given Collection must not be null, and it must not contain any null elements. If the given Collection is subsequently modified, the returned List will not reflect such modifications.
- 인자로 주어진 컬렉션의 요소를 순서대로 포함하는 수정할 수 없는 리스트(unmodifiable list)를 반환합니다.
- 주어진 컬렉션은 널이 아니어야 하며, 널 요소를 포함하지 않아야 합니다.
- 주어진 컬렉션이 이후에 수정되면, 반환된 리스트에는 그러한 수정 사항이 반영되지 않습니다.
of()
Returns an unmodifiable list containing zero elements.
- 0개의 요소를 포함하는 수정 불가능한 목록(unmodifiable list)을 반환합니다.
즉, 두 메서드 모두 Collections.unmodifiableList()를 반환하는데, 인자가 무엇이냐에 따라 나뉨
- copyOf()는 기존의 Collection 객체를 받아 새로운 List를 생성
- of()는 별도의 원본 없이 varargs로 전달된 값들로 새로운 List를 생성
테스트를 해보자
- 파라미터가 없는 List.copyOf()
- copyOf는 Collection만을 인자로 받기 때문에 컴파일 오류가 뜬다.
- null인 컬렉션이 파라미터인 경우 List.copyOf()
- NullPointerException이 발생한다.
- 인자가 아예 없는 List.of()
- 괜찮다.
2, 3번 실행 시
'우아한테크코스 6기 > 1단계' 카테고리의 다른 글
[자동차 경주 미션] 학습 내용 정리 (1) | 2024.03.25 |
---|---|
일급 컬렉션 (1) | 2024.03.25 |
[자동차 경주 미션] 개인 회고 (0) | 2024.03.25 |
static final 변수는 항상 상수일까? (0) | 2024.03.11 |
Junit5, AssertJ 새롭게 알게 된 내용들 (0) | 2024.02.15 |