Java中的元组枚举

时间:2014-07-02 11:17:14

标签: java

我是Java的新手并且想知道并且没有发现任何相关内容。

你能创建枚举元组吗?

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

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

3 个答案:

答案 0 :(得分:9)

您始终可以为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值之间的有效映射。

答案 1 :(得分:1)

@christopher的解决方案仅涵盖第一部分。创建ENUM。

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

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

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

答案 2 :(得分:0)

您可以这样做: -

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 enum中定义一个公共getValue()方法,就像任何普通的java类一样。第一行中的半冒号也是可选的。

 private int getValue() { return value; }

并获得如下值: -

PENNY.getValue(); //returns int 1

Refrence: