Java 9부터 사용할 수 있는 of를 통해 Map, Set, List 등의 Java Collection을 손쉽게 초기화할 수 있습니다.
1. value에 null이 들어가면 안된다.
다만, Map.of(), Set.of(), List.of() 등을 사용할 때, value에 null을 넣게 되면 NullPointerException이 발생합니다.
public class CollectionOfTest {
@Test(expected = NullPointerException.class)
public void mapOfTest() {
Map<String, Object> map = Map.of("key1", null); // NullPointerException 발생
}
@Test(expected = NullPointerException.class)
public void listOfTest() {
List<String> list = List.of("a", null); // NullPointerException 발생
}
@Test(expected = NullPointerException.class)
public void setOfTest() {
Set<String> set = Set.of("a", null); // NullPointerException 발생
}
}
2. Map.of()에는 개수 제한이 있다
Map.of()에는 개수 제한이 있으므로, 11개 이상의 Map을 초기화 하고 싶다면 Map.ofEntries()를 사용해야 한다.
참고로, Set.of()와 List.of()는 파라미터를 가변인자로 받고 있기 때문에, 파라미터 개수 제한이 없다.
3. of()와 ofEntries()는 Immutuable 객체를 반환한다.
of와 ofEntries는 Immutable 객체를 반환하므로, 이를 반환받은 객체에 put이나 remove가 불가능하다.
@Test(expected = UnsupportedOperationException.class)
public void immutableTest() {
Map<String, Object> map = Map.of("key01", "a");
map.put("key2", "test"); // UnsupportedOperationException 발생
}
참조 : https://velog.io/@sangwoo0727/Map.of-를-통한-Map-초기화-주의할-점
'Java' 카테고리의 다른 글
[Java] 함수형 인터페이스 예시 (Functional Interface) (0) | 2022.09.20 |
---|