如何使用番石榴初始化空的 ImmutableEnumMap?

How to initialize empty ImmutableEnumMap using guava?

我有一个以 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 是包私有的 class 所以我不能 ImmutableEnumMap.of()。还有其他办法吗?

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