如何反转枚举? [英] How to reverse enum?

查看:106
本文介绍了如何反转枚举?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个枚举类

public class PTalkCommand {
public enum Code {
        CLR((byte) 0),
        ACK((byte) 170),
        SER((byte) 0),
        NAK((byte) 0),
        TIMEOUT((byte) 255),
        DIP((byte) 173),
        REQUEST_CHECKSUM((byte) 162),
        REQUEST_STATUS((byte) 181),
        REQUEST_FLASH((byte) 166),
        REQUEST_CONFIG_READ((byte) 249),
        REQUEST_STATUS_SCREEN((byte) 208),
        REQUEST_MULTIPULSE_CONFIG((byte) 0),
        REQUEST_SERIAL_NUMBER((byte) 62),
        REQUEST_BILL_NAMES((byte) 64),
        DO_FLASH((byte) 161),
        DO_MOTOR((byte) 81),
        DO_SEND_EE_PROM_DATA((byte) 50),
        DO_ENTER_FILE_NAME((byte) 61),
        DO_ENTER_SERIAL_NUMBER((byte) 63),
        DO_CONFIGURE((byte) 248),
        DO_MULTIPULSE_CONFIG((byte) 210),
        DATA_COLLECTION_RAW_SENSORS((byte) 84),
        DATA_COLLECTION_MODE((byte) 0),
        DATA_COLLECTION_CAL_POINTS((byte) 0),
        DATA_COLLECTION_WITH_DEBUG((byte) 68),
        DATA_COLLECTION_EXIT((byte) 119),
        CALIBRATE_OAS((byte) 150),
        CALIBRATE_NOTE_PRESENT_PUNCH((byte) 0),
        CALIBRATE_CB_REMOVED((byte) 0),
        CALIBRATE_IR_BLUE_TRANSMISSIVE((byte) 0),
        CALIBRATE_IR_REFLECTIVE((byte) 0),
        CALIBRATE_BLUE_REFLECTIVE((byte) 0),
        CALIBRATE_MONITOR_VOLTAGES((byte) 0),
        STACKER_OR_STACKERLESS((byte) 158),
        CALIBRATE_CURVE_LEVER((byte) 0),
        REQUEST_BEZEL_REV_LEV((byte) 73),
        DO_BEZEL_UPDATE((byte) 82);

        private final byte valueCode;

        private Code(byte value) {
            this.valueCode = value;
        }

        public byte getValue() {
            return valueCode;
        }
    }
}

相反的顺序。在.Net中,代码就像这样

And want it to get in reverse order. In .Net the code is like this

public void Prepend (PTalkCommand.Code[] commands) {
            IEnumerable<PTalkCommand.Code> enumerable = commands.Reverse<PTalkCommand.Code> ();
            foreach (PTalkCommand.Code current in enumerable) {
                base.Insert (0, (byte)current);
            }
        }

在Java中,我也试图做同样的事情。

And in Java i am trying to do the same.

Enumeration<PTalkCommand.Code> enumerable = commands. ???????

但是,我无法做到这一点。请告诉我如何在Java中做同样的事情?

But, i am not able to do it. Please tell me how can i do the same in Java?

推荐答案

有一个内置的 .values ()方法返回所有枚举常量的数组。您可以向后迭代。

There's a built-in .values() method that returns an array of all the enum constants. You can iterate it backwards.

Code[] values = Code.values();
for (int i = values.length - 1; i >= 0; i--) {
    Code next = values[i];
    //do your thing
}

这篇关于如何反转枚举?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆