Programing

구아바 ImmutableMap 초기화

lottogame 2020. 7. 3. 18:45
반응형

구아바 ImmutableMap 초기화


구아바는지도를 초기화하기위한 좋은 지름길을 제공합니다. 그러나 내지도가 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 받아들이는 과부하 KV다른 유형이 될 수는.

당신이 원하는 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"
);

참고 URL : https://stackoverflow.com/questions/9489384/initializing-a-guava-immutablemap

반응형