如何使用番石榴初始化空的 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() 而不必担心枚举部分。没有区别。
我有一个以 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() 而不必担心枚举部分。没有区别。