Goyave offre un raccourci Nice pour initialiser une carte. Cependant, l'erreur de compilateur suivante (Eclipse Indigo) apparaît lorsque ma carte est initialisée à neuf entrées.
La méthode of(K, V, K, V, K, V, K, V, K, V)
dans le type ImmutableMap
n'est pas applicable pour les arguments (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"
);
Le message semble dire que
Un ImmutableMap a une taille maximale de quatre paires de clé, valeur.
Évidemment, cela ne peut pas être le cas, mais je ne sais pas quoi faire pour augmenter la taille de mon initialiseur.
Quelqu'un peut-il me dire ce qui manque?
Notez que votre message d'erreur ne contient que cinq paires K, V
, Soit 10 arguments au total. C'est par conception; la classe ImmutableMap fournit six méthodes of()
différentes, acceptant entre zéro et cinq paires clé-valeur. Il n'y a pas de surcharge of(...)
acceptant un paramètre varags car K
et V
peuvent être de types différents.
Vous voulez 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();
si la carte est courte, vous pouvez faire:
ImmutableMap.of(key, value, key2, value2); // ...up to five k-v pairs
Si c'est plus long alors:
ImmutableMap.builder()
.put(key, value)
.put(key2, value2)
// ...
.build();
"put" a été obsolète , abstenez-vous de l'utiliser, utilisez .of à la place
ImmutableMap<String, String> myMap = ImmutableMap.of(
"city1", "Seattle",
"city2", "Delhi"
);