Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何反转枚举?_Java_Android_Enums - Fatal编程技术网

Java 如何反转枚举?

Java 如何反转枚举?,java,android,enums,Java,Android,Enums,我下面有一个枚举类 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),

我下面有一个枚举类

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中,代码如下所示

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);
            }
        }
public void Prepend(PTalkCommand.code[]命令){
IEnumerable enumerable=commands.Reverse();
foreach(PTalkCommand.Code可枚举中的当前代码){
基本。插入(0,(字节)当前值);
}
}
在Java中,我也在尝试做同样的事情

Enumeration<PTalkCommand.Code> enumerable = commands. ???????
枚举可枚举=命令???????

但是,我做不到。请告诉我如何在Java中执行相同的操作?

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

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

您可以将此内部类添加到
枚举中

    public static class Backwards implements Iterable<Code> {

        @Override
        public Iterator<Code> iterator() {
            return new Iterator<Code>() {
                private Code[] codes = Code.values();
                private int i = codes.length - 1;

                @Override
                public boolean hasNext() {
                    return i >= 0;
                }

                @Override
                public Code next() {
                    if (i < 0) {
                        throw new NoSuchElementException();
                    }
                    return codes[i--];
                }

            };
        }

    }
public静态类向后实现Iterable
{
@凌驾
公共迭代器<代码>迭代器(){
返回新迭代器(){
私有代码[]代码=代码.值();
专用int i=代码。长度-1;
@凌驾
公共布尔hasNext(){
返回i>=0;
}
@凌驾
公共代码next(){
if(i<0){
抛出新的NoTouchElementException();
}
返回码[i--];
}
};
}
}

我想知道为什么oracle没有改进枚举功能…:-\@marcolopes-因为Java中的IMHO
enum
已经非常灵活了。我错过了一些方法,比如names()-字符串名称数组,以及扩展它们的可能性(这将是一个很大的优势!)