如何使用guava初始化空的ImmutableEnumMap?

时间:2017-01-01 02:41:42

标签: java guava enum-map

我有一个构造函数,它将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;
  }

现在我如何为NO_OPERATION编写相同的等效行,但使用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()。还有其他办法吗?

1 个答案:

答案 0 :(得分:3)

没有公共的ImmutableEnumMap类型,因此您无论如何都必须将其键入为ImmutableMap - 因此您可以使用ImmutableMap.of()而无需担心枚举部分。没有区别。