Java中的元组枚举
我对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
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不管怎样,都不能对枚举进行子类化,谁在乎它是最终的还是非最终的呢?正如我所说,这是一个风格注释。对我来说,它应该是最终的,不是因为重写(即使枚举可以被重写,它也是一个私有变量,所以它不会被重写),而是因为它的值在初始赋值后不会更改。感谢工作得很有魅力,并没有打破旧枚举的现有用法:)感谢这也需要它;)