在Java中静态初始化EnumMap的最佳方法是什么
我需要静态初始化EnumMap。我知道两种方法在Java中静态初始化EnumMap的最佳方法是什么,java,enums,static,enum-map,Java,Enums,Static,Enum Map,我需要静态初始化EnumMap。我知道两种方法 Map()方法的使用 private static final Map TEST_Map=Map.of(枚举常量1,“值1”,枚举常量2,“值2”); 使用双括号初始化 private static final Map TEST\u Map=new EnumMap(EnumKey.class){ { put(枚举常量1,“值1”); put(枚举常量2,“值2”); } }; 还有其他更干净、更高效的方法吗?在静态块中执行: priva
private static final Map TEST_Map=Map.of(枚举常量1,“值1”,枚举常量2,“值2”);
private static final Map TEST\u Map=new EnumMap(EnumKey.class){
{
put(枚举常量1,“值1”);
put(枚举常量2,“值2”);
}
};
还有其他更干净、更高效的方法吗?在静态块中执行:
private static final EnumMap<....> yourMap = ...
static {
yourMap.put(....);
yourMap.put(....)
}
private static final EnumMap yourMap=。。。
静止的{
你的地图;
你的地图。放(…)
}
通过
恒定动态在静态块中执行,将有不同的方法来执行此操作(但它们在API中还不存在):
private static final EnumMap<....> yourMap = ...
static {
yourMap.put(....);
yourMap.put(....)
}
private static final EnumMap yourMap=。。。
静止的{
你的地图;
你的地图。放(…)
}
通过常量动态
用一种方法来实现这一点,有很多不同的方法(但它们在API中还不存在):
private static final EnumMap<....> yourMap = yourMapMethod();
private static EnumMap<....> yourMapMethod() {
EnumMap<....> yourMap = ...
yourMap.put(....);
yourMap.put(....);
return yourMap;
}
private static final EnumMap yourMap=yourMapMethod();
私有静态EnumMap yourMapMethod(){
EnumMap yourMap=。。。
你的地图;
你的地图;
归还地图;
}
用以下方法完成:
private static final EnumMap<....> yourMap = yourMapMethod();
private static EnumMap<....> yourMapMethod() {
EnumMap<....> yourMap = ...
yourMap.put(....);
yourMap.put(....);
return yourMap;
}
private static final EnumMap yourMap=yourMapMethod();
私有静态EnumMap yourMapMethod(){
EnumMap yourMap=。。。
你的地图;
你的地图;
归还地图;
}
设置EnumMap的一种简洁方法是使用Map.of
或Map.of Entries
在线定义所有值,但请注意,这会在EnumMap构造函数之前分配一个映射:
private static final EnumMap<YourEnum,String> A = new EnumMap<>(Map.of(
YourEnum.ONE, "Value1",
YourEnum.TWO, "Value2"
));
// Use Map.ofEntries for enums with more than 10 values:
private static final EnumMap<YourEnum,String> B = new EnumMap<>(Map.ofEntries(
Map.entry(YourEnum.ONE, "Value1"),
Map.entry(YourEnum.TWO, "Value2")
));
设置EnumMap的一种简单方法是使用Map.of
或Map.of entries
在线定义所有值,但请注意,这会在EnumMap构造函数之前分配一个映射:
private static final EnumMap<YourEnum,String> A = new EnumMap<>(Map.of(
YourEnum.ONE, "Value1",
YourEnum.TWO, "Value2"
));
// Use Map.ofEntries for enums with more than 10 values:
private static final EnumMap<YourEnum,String> B = new EnumMap<>(Map.ofEntries(
Map.entry(YourEnum.ONE, "Value1"),
Map.entry(YourEnum.TWO, "Value2")
));
第二个是大反模式,第一个不初始化EnumMap
,但Map
(不可变)第二个是大反模式,第一个不初始化EnumMap
,而是Map
(不可变)在静态块中执行此操作的具体原因是什么?@sham还有其他原因吗?第一个看起来也不错。使用静态块更好吗?我得到了答案。“请注意,这个Map.of方法最多只支持10个键值对。”在你的文章中提到它-是的,我同意…我说的是Map.of
,它可以存储最多10个映射,这是由of entries
在静态块中执行该操作的任何特定原因所克服的。@sham还有其他原因吗?第一个看起来也不错。使用静态块更好吗?我得到了答案。“注意,这个Map.of方法最多只支持10个键值对。”在你的文章中提到它-是的,我同意…我说的是Map.of
,它可以存储最多10个映射,这是由of entries
克服的。感谢分享这种方法。感谢分享这种方法。