171 votes

l'initialisation d'une Goyave ImmutableMap

Goyave offre un beau raccourci de l'initialisation d'une carte. Mais j'ai l'erreur suivante compilateur (Eclipse Indigo) lors de ma carte d'initialiseur arrive à neuf entrées.

La méthode de(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 qu'un ImmutableMap a une taille maximale de quatre paires de clé,valeur. De toute évidence, ce ne peut être le cas, mais je ne peux pas comprendre ce qu'il faut faire pour augmenter la taille de mon initialiseur.

Quelqu'un peut me dire ce qui est absent?

316voto

Jon Skeet Points 692016

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();

71voto

Nathan Feger Points 7675

si la carte est courte, vous pouvez le faire:

ImmutableMap.of(Key, Value, Key, Value...);

si elle est plus longue:

ImmutableMap.builder()
   .put(key, value)
   .put(key, value)
   .build();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X