获取枚举字段的值

时间:2015-05-31 13:15:58

标签: java enums byte

我有一个字节值的枚举:

        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;

有没有办法让字节值从枚举中恢复出来?

谢谢!

1 个答案:

答案 0 :(得分:2)

您应该使用getId枚举的Message方法:

message[0] = ByteMessage.M.ACK.getId();

enum中的每个常量都是enum的一个实例。就像类一样,enum的实例可以包含数据。在您的特定情况下,每个enum常量都有一个id,在创建enum常量时会对其进行初始化,并且可以通过getId成员方法进行访问。