[英]Get enum value from string constructor
在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)
使用枚舉數的名稱Enum.valueof(String)
而不是您傳遞給構造函數的字符串。
如果要將其他字符串映射到枚舉器,請考慮在枚舉器類中創建靜態映射。
例如:
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 );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.