구아바는지도를 초기화하기위한 좋은 지름길을 제공합니다. 그러나 내지도가 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"
);
메시지는
ImmutableMap의 최대 크기는 키, 값의 4 쌍입니다.
분명히, 이것은 사실이 될 수 없지만 초기화 장치의 크기를 늘리기 위해 어떻게해야하는지 알 수 없습니다.
누군가가 누락 된 것을 말해 줄 수 있습니까?
답변
오류 메시지에는 5 개의 K, V
쌍 (총 10 개의 인수) 만 포함되어 있습니다 . 이것은 의도적으로 설계된 것입니다. ImmutableMap 클래스는 6 가지 of()
방법을 제공 하며 0 ~ 5 개의 키-값 쌍을 허용합니다. 가 아닌 of(...)
A가 있기 때문에 매개 변수 varags 받아들이는 과부하 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();
답변
“put”은 더 이상 사용되지 않습니다. 사용 하지 말고 대신 .of를 사용하십시오.
ImmutableMap<String, String> myMap = ImmutableMap.of(
"city1", "Seattle",
"city2", "Delhi"
);