gpt4 book ai didi

java - 从字符串构造函数获取枚举值

转载 作者:行者123 更新时间:2023-12-01 08:13:08 24 4
gpt4 key购买 nike

在 Java 中,我试图从字符串中获取枚举值。

例如我得到:

MESSENGERINIT("@L")

这也在枚举中:

private String header;

private ServerPackets(String header)
{
this.header = header;
}

public String getHeader()
{
return this.header;
//more code here.
}

但是如果我尝试使用:

System.out.println("[" + ServerPackets.valueOf(header) + 
"] - Received unregistered header " +
Base64Encoding.decode(header) + "(" + header + ") with body " +
connection.reader.toString());

我收到此错误:

java.lang.IllegalArgumentException: No enum constant 
com.kultakala.communication.ServerPackets.@L
at java.lang.Enum.valueOf(Unknown Source)</code>

错误消息是什么意思以及我做错了什么?

最佳答案

Enum.valueof(String) 使用枚举器的名称 - MESSENGERINIT - 而不是传递给构造函数的字符串。

如果要将其他字符串映射到枚举器,请考虑在枚举器类中创建静态映射。

例如:

enum ServerPackets {
...

private static Map<String,ServerPackets> s_map = new HashMap<String,ServerPackets>();
static {
map.put( "@L", MESSENGERINIT);
...
}
public ServerPackets getEnumFromHeader( String header ) {
return map.get( header );
}

关于java - 从字符串构造函数获取枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15766690/

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