获取枚举字段的值

Getting the value of an enum field

我有一个字节值的枚举:

        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;
                }
            }

在另一个class中我有这个功能:

            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;

有没有办法从枚举中取回字节值?

谢谢!

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

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

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