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;
  }

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

4

1 回答 1

4

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

于 2017-01-01T03:38:58.580 回答