クラスレベルでジェネリックも定義できます。
ImmutableMap.BuilderはBuilderが内部静的クラスであることを示します。
とビルダーメソッドは、引数が
を意味するKとVを持つことになります任意の型が入れて、あなたの場合は使用して追加することができるように、代わりにプット(文字列、文字列)それはプットのようなmethosを提供(K、V)を提供することを意味しますあなたは同じタイプを使う必要があります。例えば
あなたは、文字列を渡すことでBuilder.Putを呼び出している場合、文字列は、GETで、私たちは直接文字列
文字列のval = Bullder.get(K)に割り当てることができます。
これは、ImmutableMap.Builderのすべてのメソッドがどのクラスタイプでも機能することを意味します。
これはジェネリックの力で、異なるタイプのメソッドをオーバーレイドする必要がないという意味です。 はちょうど下記のように定義する:
public Builder<K, V> put(K key, V value) {
ensureCapacity(size + 1);
ImmutableMapEntry<K, V> entry = entryOf(key, value);
// don't inline this: we want to fail atomically if key or value is null
entries[size++] = entry;
return this;
}
それは一般的な静的メソッドですが、ここで答えを参照してください。 https://stackoverflow.com/questions/27166610/what-does-the-dot-operator-before-the- generic-parameter-mean –
ああ、はい、これは私が探していたものでした!私は捜していませんでした。それ以降はジェネリックスの代わりに演算子を使用します。私の同じ方法でそれを検索する人々のために開いている可能性がありますか? –