초기화, Guava UnmutableMap
Guava는 지도를 초기화하기 위한 멋진 지름길을 제공합니다.그러나 맵이 9개의 엔트리로 초기화되면 다음과 같은 컴파일러 오류(Eclipse Indigo)가 발생합니다.
방법of(K, V, K, V, K, V, K, V, K, V)그런 타입의ImmutableMap인수에 적용할 수 없습니다.(String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String, String)
ImmutableMap<String,String> myMap = ImmutableMap.of(
"key1", "value1",
"key2", "value2",
"key3", "value3",
"key4", "value4",
"key5", "value5",
"key6", "value6",
"key7", "value7",
"key8", "value8",
"key9", "value9"
);
메시지에는 다음과 같은 내용이 있는 것 같습니다.
UnmutableMap의 최대 크기는 4쌍의 키와 값입니다.
물론 그럴 수는 없지만 이니셜라이저의 크기를 늘리려면 어떻게 해야 할지 모르겠습니다.
뭐가 빠졌는지 누가 좀 말해줄래?
오류 메시지에는 5개만 포함되어 있습니다.K, Vpairs, 총 10개의 인수.이는 설계상이며 UnmutableMap 클래스는 6가지 다른 기능을 제공합니다.of()메서드, 0 ~5개의 키와 값의 쌍을 받아들입니다.는 없습니다.of(...)다음과 같은 이유로 인해 변수 수용 오버로드K그리고.V는 다른 타입으로 할 수 있습니다.
당신이 원하는 것은ImmutableMap.Builder:
ImmutableMap<String,String> myMap = ImmutableMap.<String, String>builder()
.put("key1", "value1")
.put("key2", "value2")
.put("key3", "value3")
.put("key4", "value4")
.put("key5", "value5")
.put("key6", "value6")
.put("key7", "value7")
.put("key8", "value8")
.put("key9", "value9")
.build();
맵이 짧은 경우 다음을 수행할 수 있습니다.
ImmutableMap.of(key, value, key2, value2); // ...up to five k-v pairs
이 시간이 길면:
ImmutableMap.builder()
.put(key, value)
.put(key2, value2)
// ...
.build();
능력과 가독성 사이의 균형을 유지하려면 두 가지 방법을 조합할 수 있습니다.
ImmutableMap<String,String> myMap = ImmutableMap.<String, String>builder()
.putAll(ImmutableMap.of(
"key1", "value1",
"key2", "value2",
"key3", "value3",
"key4", "value4"));
.putAll(ImmutableMap.of(
"key5", "value5",
"key6", "value6",
"key7", "value7",
"key8", "value8",
"key9", "value9"));
.build();
이것이 좋은 생각인지 아닌지는 논의의 여지가 있다.
언급URL : https://stackoverflow.com/questions/9489384/initializing-a-guava-immutablemap
'source' 카테고리의 다른 글
| Java 식별자에서 "연결 문자"란 무엇입니까? (0) | 2022.09.01 |
|---|---|
| 컴파일러와 링커의 차이점은 무엇입니까? (0) | 2022.09.01 |
| glibc의 stren은 왜 이렇게 복잡해야 빨리 실행할 수 있나요? (0) | 2022.09.01 |
| 치명적인 오류: mpi.h: 해당 파일 또는 디렉토리 #이(가) 없습니다. (0) | 2022.09.01 |
| Vuex를 사용한 비동기 콜 발신 (0) | 2022.09.01 |