1概要


ClassToInstanceMap <B>

は、クラスを対応するインスタンスに関連付ける特別な種類のマップです。すべてのキーと値が上限型

B.

のサブタイプであることを確認します。


ClassToInstanceMap

はJavaの

Map

インターフェースを拡張し、2つの追加メソッドを提供します。

T getInstance(Class <T>)

と__T putInstance(Class <T>、T)。安全な操作とキャストを避けます。

このチュートリアルでは、Google Guavaの

ClassToInstanceMap

インターフェイスとその実装の使い方を説明します。


2 Google Guavaの

ClassToInstanceMap


実装の使い方を見てみましょう。

まず、

pom.xml

にGoogle Guavaライブラリの依存関係を追加します。

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>21.0</version>
</dependency>

依存関係の最新バージョンはhttps://search.maven.org/classic/#search%7C1%7Cg%3A%22com.google.guava%22%20AND%20a%3A%22guava%22[ここに]。


ClassToInstanceMap

インタフェースには、可変と不変の2つの実装があります。それぞれを個別に見てみましょう。


3

ImmutableClassToInstanceMap


を作成する


ImmutableClassToInstanceMap

のインスタンスを作成する方法はいくつかあります。

  • 空のマップを作成するために

    of()

    メソッドを使う:

ImmutableClassToInstanceMap.of()


  • of(Class <T> type、T value)

    メソッドを使って単一のエントリを作成する

地図:

ImmutableClassToInstanceMap.of(Save.class, new Save());

  • 別のマップをパラメータとして受け取る

    copyOf()

    メソッドを使用する。それ

パラメータとして与えられたmapと同じエントリでmapを作成します。

+[source、java、gutter:、true]

ImmutableClassToInstanceMap.copyOf(someMap)

  • ビルダーを使う:

ImmutableClassToInstanceMap.<Action>builder()
  .put(Save.class, new Save())
  .put(Open.class, new Open())
  .put(Delete.class, new Delete())
  .build();


4

MutableClassToInstanceMap


を作成する


MutableClassToInstanceMap

のインスタンスを作成することもできます。

  • インスタンスをバックアップする

    create()

    メソッドを使う


HashMap

:

MutableClassToInstanceMap.create();


  • create(Map <Class <?extends B>、B> backingMap)を使う

提供された空のマップを基にしたインスタンス

MutableClassToInstanceMap.create(new HashMap());


5使用法

通常の

Map

インターフェースに追加された2つの新しいメソッドの使い方を見てみましょう。

  • 最初のメソッドは

    <TはB> T getInstance(Class <T>型)

    を拡張します。

Action openAction = map.get(Open.class);
Delete deleteAction = map.getInstance(Delete.class);

  • 2番目の方法は__ <TはB> T putInstance(Class <T>型、@ NULL可能)

T値)__:

+[source、java、gutter:、true]

Action newOpen = map.put(Open.class, new Open());
Delete newDelete = map.putInstance(Delete.class, new Delete());


6. 結論

このクイックチュートリアルでは、Guavaライブラリの

ClassToInstanceMap

の使用方法の例を示しました。

これらの例の実装はhttps://github.com/eugenp/tutorials/tree/master/guava-collections[the GitHub project]にあります。