gpt4 book ai didi

java - 在构造调用期间将 Java 枚举放入静态映射中是否安全?

转载 作者:行者123 更新时间:2023-11-30 05:35:59 25 4
gpt4 key购买 nike

正如标题所示,我有以下Enum:

public enum MyEnum {

FIRST_ENUM("first enum"),
SECOND_ENUM("second enum"),
THIRD_ENUM("third enum"),
FORTH_ENUM("forth enum");

private final String param;

private static class Mapper {
static Map<String, MyEnum> MAP = new HashMap<>();
}

MyEnum(String param) {
this.param = param;
Mapper.MAP.put(param, this); // Is this going to be a problem?
}

public static MyEnum MyEnum(String value) {
return Holder.MAP.get(value);
}

}

我想知道放置一个尚未完成实例化/构造的枚举是否可能会导致问题?

最佳答案

您不需要创建单独的 Mapper 类。我们的用例也使用类似的东西。

public enum MyEnum {

FIRST_ENUM("first enum"),
SECOND_ENUM("second enum"),
THIRD_ENUM("third enum"),
FORTH_ENUM("forth enum");

private final String param;
private static final Map<String, MyEnum> MAP = new HashMap<>();
static {

for (final MyEnum myEnum : MyEnum.values()) {
MAP.put(myEnum.param, myEnum);
}
}

MyEnum(String param) {
this.param = param;
}

@JsonCreator
public static MyEnum myEnumMapper(String value) {
return MAP.get(value);
}

}

关于java - 在构造调用期间将 Java 枚举放入静态映射中是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com