我有一个字节值的枚举:
public class ByteMessage {
public enum Messages {
ACK(0x01), CHAT(0x02), TURN(0x02), WAITING(0x03), REMATCH(0x04), DOUBLE(0x05), LOADREQUEST(0x06), LOADCOMPLETE(0x07),
ROLL(0x08), DBLACCEPTORDECLINE(0x09), DBLRECV(0x0A), ALERTPEERNOPOSSIBLES(0x0B), UPDATEDIES(0x0C),
SETTURN(0x0D), SETFIRSTROLL(0x0E), CALCPOSSIBLEINDEXES(0x0F), LOADGAMEREQUEST(0x10), LOADGAMECOMPLETE(0x11), PUSHSTATUSTEXT(0x12),
ISDOUBLESOWNER(0x13);
private final byte id;
Messages(int id) {
this.id = (byte) id;
}
public byte getId() {
return this.id;
}
}
在另一个班级,我有这个功能:
private void SendACK()
{
byte[] message = new byte[10];
//Neither one of these will compile I have to return back the byte value of ACK
//Byte a = new Byte(ByteMessage.M.ACK);
//message[0] = ByteMessage.M.ACK;
有没有办法让字节值从枚举中恢复出来?
谢谢!
答案 0 :(得分:2)
您应该使用getId
枚举的Message
方法:
message[0] = ByteMessage.M.ACK.getId();
enum
中的每个常量都是enum
的一个实例。就像类一样,enum
的实例可以包含数据。在您的特定情况下,每个enum
常量都有一个id
,在创建enum
常量时会对其进行初始化,并且可以通过getId
成员方法进行访问。