我有一个构造函数,它将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()
。还有其他办法吗?
答案 0 :(得分:3)
没有公共的ImmutableEnumMap类型,因此您无论如何都必须将其键入为ImmutableMap - 因此您可以使用ImmutableMap.of()而无需担心枚举部分。没有区别。