我有以下枚举
public static enum STATUS{
STRTD, COMP
}
我希望为枚举提供更多含义,并使编码中的枚举属性易于识别。但我无法修改枚举如下 -
public static enum STATUS{
STARTED("STRTD"), COMPLETED("COMP")
}
请建议它可行。如果可能,那我在哪里做错了。
答案 0 :(得分:6)
这是因为您需要为枚举定义构造函数。添加一个合适的构造函数:
public static enum STATUS{
STARTED("STRTD"), COMPLETED("COMP");
public final String status;
private STATUS(String status) {
this.status = status;
}
}
现在您可以从枚举中访问此字段:
System.out.println(STATUS.STARTED.status);
以防万一你将在用于JavaBean标准的工具中使用这个枚举(正如@chrylis所指出的那样):
public static enum STATUS{
STARTED("STRTD"), COMPLETED("COMP");
private final String status;
private STATUS(String status) {
this.status = status;
}
public String getStatus() {
return this.status;
}
}
答案 1 :(得分:2)
public enum Status{
STARTED("STRTD"), COMPLETED("COMP");
private String status;
Status(String status) {
this.status=status;
}
}
答案 2 :(得分:1)
public enum Status {
STARTED("STRTD"), COMPLETED("COMP");
private String name;
private Status(String name) {
this.name = name
}
public String getName() {
return this.name;
}
}
答案 3 :(得分:0)
enum CODE {
SUCCESS("SCS"), DELETE("DEL");
private String status;
/**
* @return the status
*/
public String getStatus() {
return status;
}
/**
* @param status
* the status to set
*/
public void setStatus(String status) {
this.status = status;
}
private CODE(String status) {
this.status = status;
}
public static String getNameByCode(String code) {
for (int i = 0; i < CODE.values().length; i++) {
if (code.equals(CODE.values()[i].status))
return CODE.values()[i].name();
}
return null;
}