java - 获取枚举字符串

标签 java enums

我有以下枚举:

 public static enum OpCode {
    a((byte) 0x0),
    b((byte)0x18),
    c((byte)0x1A);

    private byte value; 

    private  OpCode (byte value) {
        this.value = value;
    }

    byte getValue() {
        return value;
    }

如果我的值 x = 0x18 我怎样才能得到字符串'b'?

这是我尝试过的:

    System.out.println(OpCode.values()[x]);

但是不起作用

最佳答案

您可以实现静态方法,例如fromByte:

public enum OpCode {
... truncated
    public static OpCode fromByte(byte x) {
        for(OpCode oc : values()) {
           if (oc.getValue() == x) {
               return oc;
           }
        }
        throw new IllegalArgumentException("Unknown OpCode value: " + x);
    }
}

然后你可以这样调用它:

OpCode oc = OpCode.fromByte(x);

关于java - 获取枚举字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46872758/

相关文章:

c++ - 不能使用枚举类作为 unordered_map 键

angular - 枚举未定义

java - ClusterSingletonManager 未进行故障转移

java - java接口(interface)与继承

java - 是否需要手动销毁和关闭 java.lang.Process 的打开流?

java - 在java中将新数据添加到mongodb中的现有集合中

ruby-on-rails - 多列的相同枚举值

enums - 枚举的 Kotlin Proguard 规则?

c - 使用 GCC 链接器强制执行 32 位枚举

java - 使用 Mapreduce for Java Appengine 计算唯一用户数