java - Inicializando un Mapa Inmutable de Guava
dictionary (2)
Tenga en cuenta que su mensaje de error solo contiene cinco pares K, V
, 10 argumentos en total. Esto es por diseño; la clase ImmutableMap proporciona seis métodos diferentes of()
, aceptando entre cero y seis pares clave-valor. No hay una sobrecarga of(...)
acepte un parámetro de varags porque K
y V
pueden ser de tipos diferentes.
Desea un 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();
Guava ofrece un buen atajo para inicializar un mapa. Sin embargo, recibo el siguiente error de compilación (Eclipse Indigo) cuando mi mapa se inicializa en nueve entradas.
El método of(K, V, K, V, K, V, K, V, K, V)
en el tipo ImmutableMap
no es aplicable para los argumentos (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"
);
El mensaje parece decir que
Un ImmutableMap tiene un tamaño máximo de cuatro pares de clave, valor.
Obviamente, este no puede ser el caso, pero no puedo imaginar qué hacer para aumentar el tamaño de mi inicializador.
¿Puede alguien decirme qué falta?
si el mapa es corto, puedes hacer:
ImmutableMap.of(key, value, key2, value2); // ...up to five k-v pairs
Si es más largo entonces:
ImmutableMap.builder()
.put(key, value)
.put(key2, value2)
// ...
.build();