Java中的元组枚举

Java中的元组枚举,java,Java,我对Java非常陌生,对它感到好奇,但没有找到任何相关信息 你能创建枚举元组吗 public enum Status {OPEN : "1", CLOSED: "2", DELETED: "3"} 我需要访问“OPEN”或“1”您可以始终为枚举创建自定义构造函数 public enum Status { OPEN("1"), CLOSED("2"), DELETED("3"); private String code; public Status

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

你能创建枚举元组吗

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

我需要访问“OPEN”或“1”

您可以始终为
枚举创建自定义构造函数

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()
进行访问。这是
枚举
类型和
代码
值之间的有效映射。

您可以执行以下操作:-

public enum Currency {PENNY(1), NICKLE(5), DIME(10), QUARTER(25)};
PENNY.getValue(); //returns int 1
但为了实现这一点,您需要定义一个成员变量和一个构造函数,因为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; }
并获得如下值:-

public enum Currency {PENNY(1), NICKLE(5), DIME(10), QUARTER(25)};
PENNY.getValue(); //returns int 1

由@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");
}    

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

你能在代码中给出一个预期用法/用例的例子吗?也许你会发现这很有用:我在写这个,你是第一个,将Static更改为Status,这将是完美的:D@Sirs不管怎样,都不能对枚举进行子类化,谁在乎它是最终的还是非最终的呢?正如我所说,这是一个风格注释。对我来说,它应该是最终的,不是因为重写(即使枚举可以被重写,它也是一个私有变量,所以它不会被重写),而是因为它的值在初始赋值后不会更改。感谢工作得很有魅力,并没有打破旧枚举的现有用法:)感谢这也需要它;)