Guava ClassToInstanceMapガイド

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]にあります。