1. ホーム
  2. java

[解決済み] Guava ImmutableMapの初期化

2022-04-25 07:04:08

質問

Guavaはマップを初期化するための素晴らしいショートカットを提供しています。 しかし、私のマップが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(...) オーバーロードは、バラグパラメータを受け入れるので 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();