gpt4 book ai didi

java - 无法访问枚举初始化程序中的静态字段

转载 作者:行者123 更新时间:2023-12-02 09:10:12 24 4
gpt4 key购买 nike

在此代码中,我收到编译器错误,请参阅注释:

 public enum Type {
CHANGESET("changeset"),
NEW_TICKET("newticket"),
TICKET_CHANGED("editedticket"),
CLOSED_TICKET("closedticket");

private static final Map<String, Type> tracNameMap = new HashMap<String, Type>();

private Type(String name) {
tracNameMap.put(name, this); // cannot refer to static field within an initializer
}

public static Type getByTracName(String tn) {
return tracNameMap.get(tracNameMap);
}

}

有没有一种方法可以实现这一点,通过其字段之一从 Map 获取枚举值?

最佳答案

map 在这里可能有点过分了。除非您计划拥有四个以上的枚举值,否则您可以通过简单地迭代有效字符串并返回正确的字符串来实现 getByTracName(String tn) 。如果映射键始终是枚举名称,那么您可以执行以下操作:

public enum Type {
CHANGESET,
NEW_TICKET,
TICKET_CHANGED,
CLOSED_TICKET;

private static final Map<String, Type> tracNameMap = new HashMap<String, Type>();
static {
for (Type t:Type.values()) {
tracNameMap.put(t.name(), t);
}
}
public static Type getByTracName(String tn) {
return tracNameMap.get(tracNameMap);
}

}

或者你可以这样做:

public static Type getByTracName(String tn) {
return Enum.valueOf(Type.class,tn);
}

关于java - 无法访问枚举初始化程序中的静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4278432/

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