我在JAVA中有一个ENUM我想序列化,所以当我从代码中的任何地方调用它时,我得到名称的小写字母。
假设我有以下枚举:
public enum Status {
DRAFT, PENDING, COMPLETE;
}
println ("Status=" + Status.DRAFT);
我想得到以下内容:
Status=draft
[注意]:我想以大写形式使用枚举常量,并在请求值时获取小写表示。
答案 0 :(得分:41)
我自己回答这个问题,因为我发现解决方案很有趣,但在网站上找不到回复。以防其他人寻找解决方法。
解决方案很简单,只需覆盖Enum toString方法,如下所示:
public enum Status {
DRAFT, PENDING, COMPLETE;
@Override
public String toString() {
return name().toLowerCase();
}
}
println ("Status=" + Status.DRAFT);
这将以小写形式输出名称。
答案 1 :(得分:10)
另一种解决方案可能是:
public enum Status {
DRAFT, PENDING, COMPLETE;
public String nameLowerCase(){
return name().toLowerCase();
}
}
答案 2 :(得分:5)
如果你想要小写,你可以使用小写或混合大小写,或者对你更有意义的任何东西。
public enum Status {
draft, pending, complete;
}
println ("Status=" + Status.draft);
打印
Status=draft
答案 3 :(得分:-1)
您可以使用以下Enum类,其中包含每个枚举常量的名称和序号的构造函数。您可以为枚举常量指定所需的值。
public enum Status {
DRAFT(0,"draft"), PENDING(1,"pending"), COMPLETE(2,"complete");
private int key;
private String value;
Status(int key, String value){
this.key = key;
this.value = value;
}
public int getKey() {
return key;
}
public void setKey(int key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString(){
return this.value;
}
}
由于我们覆盖toString
方法,因此返回小写的值。
使用
System.out.print("Status = "+Status.DRAFT);
会打印,
Status = draft
和
System.out.print("Status = "+Status.DRAFT.name());
会打印
Status = DRAFT