有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的元组枚举

我对Java非常陌生,对它感到好奇,但没有找到任何相关信息

你能创建枚举元组吗

public enum Status {OPEN : "1", CLOSED: "2", DELETED: "3"}

我需要访问“打开”或“1”


共 (3) 个答案

  1. # 1 楼答案

    始终可以为enum创建自定义构造函数

    public enum Status {
    
    
        OPEN("1"),
        CLOSED("2"),
        DELETED("3");
    
        private String code;
    
        public Status(String code) {
            this.code = code;
        }
    
        public String getCode() {
            return code;
        }
    }
    

    然后您可以使用Status.OPEN.getCode()进行访问。这是enum类型和code值之间的有效映射

  2. # 2 楼答案

    您可以这样做:-

    public enum Currency {PENNY(1), NICKLE(5), DIME(10), QUARTER(25)};
    

    但为了实现这一点,您需要定义一个成员变量和一个构造函数,因为PENNY(1)实际上正在调用一个接受int值的构造函数,请参见下面的示例

    public enum Currency {
            PENNY(1), NICKLE(5), DIME(10), QUARTER(25);
            private int value;
    
            private Currency(int value) {
                    this.value = value;
            }
    };  
    

    java中枚举的构造函数必须是私有的。任何其他访问修饰符都将导致编译错误。现在,为了获得与每个硬币相关联的值,您可以像任何普通java类一样在java枚举中定义一个public getValue()方法。第一行中的分号也是可选的

     private int getValue() { return value; }
    

    得到如下值:-

    PENNY.getValue(); //returns int 1
    

    Refrence:

  3. # 3 楼答案

    @christopher的解决方案仅涵盖第一部分。正在创建枚举

    您还需要一个方法来匹配代码和枚举值:

    public static Status byCode(String code){                            
        for(Status s : Status.values()) {                         
            if (s.code.equals(code)) {                            
                return s;                                         
            }                                                     
        }                                                         
    
        throw new IllegalArgumentException("Code does not match");
    }    
    

    现在可以按名称和代码获取枚举值