2

パラメータとして取るコンストラクタがありMap<ProcessInfoEnum, String>ます。NO_OPERATIONそのため、以下に示すように、空の不変マップで変数を初期化しています。

  public static final Processor NO_OPERATION = new Processor(ImmutableMap.<ProcessInfoEnum, String>of());
  private final Map<ProcessInfoEnum, String> values;

  public Processor(Map<ProcessInfoEnum, String> values) {
    this.values = values;
  }

EnumMapいくつかの設計変更により、以下に示すように使用するようにコンストラクターを変更しました。

  public Processor(EnumMap<ProcessInfoEnum, String> values) {
    this.values = values;
  }

空の不変列挙型マップを初期化できるように、同じ同等の行を for NO_OPERATIONbut with で書くにはどうすればよいでしょうか?ImmutableEnumMap

  // obviously this doesn't work
  public static final Processor NO_OPERATION = new Processor(ImmutableEnumMap.<ProcessInfoEnum, String>of());
  private final EnumMap<ProcessInfoEnum, String> values;

  public Processor(EnumMap<ProcessInfoEnum, String> values) {
    this.values = values;
  }

はパッケージプライベートクラスなのでImmutableEnumMapできませんImmutableEnumMap.of()。他に方法はありますか?

4

1 に答える 1

4

public ImmutableEnumMap 型はないため、とにかく ImmutableMap として入力する必要があります。そのため、列挙型の部分を気にせずに ImmutableMap.of() を使用できます。違いはありません。

于 2017-01-01T03:38:58.580 に答える