我是Java的新手并且想知道并且没有发现任何相关内容。
你能创建枚举元组吗?
public enum Status {OPEN : "1", CLOSED: "2", DELETED: "3"}
我需要同时访问“OPEN”或“1”
答案 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