0
在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
[email protected]
at java.lang.Enum.valueOf(Unknown Source)</code>
錯誤信息是什麼意思,我做錯了什麼?
有沒有辦法通過構造函數的字符串來獲取枚舉值的名字嗎? –
+1您可以創建一個靜態'fromString(String s)'方法遍歷'ServerPackets.values()'並返回匹配的枚舉(如果找到)。 – Axel
不要忘記'enum.valueOf(String)'方法。 – OldCurmudgeon