初始化番石榴ImmutableMap

番石榴提供了一个很好的初始化地图的快捷方式。 但是,当我的映射初始化为9个条目时,我得到以下编译器错误(Eclipse Indigo)。

ImmutableMaptypes中of(K, V, K, V, K, V, K, V, K, V)不适用于参数(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具有四对键值的最大值。

显然,这不可能是这样的,但我不知道该怎么做,以增加我的初始化的大小。

有人能告诉我什么是缺less的?

请注意,您的错误消息只包含五个K, V对,共十个参数。 这是devise的; ImmutableMap类提供了六种不同of()方法,可以接受零和六个键值对之间的关​​系。 没有of(...)过载接受vrag参数,因为KV可以是不同的types。

你需要一个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 kv pairs 

如果时间更长,则:

 ImmutableMap.builder() .put(key, value) .put(key2, value2) // ... .build();