默认情况下,将Java ENUM打印为小写,保持枚举常量为大写

时间:2013-11-10 19:29:31

标签: java enums

我在JAVA中有一个ENUM我想序列化,所以当我从代码中的任何地方调用它时,我得到名称的小写字母。

假设我有以下枚举:

public enum Status {
    DRAFT, PENDING, COMPLETE;
}
println ("Status=" + Status.DRAFT);

我想得到以下内容:

Status=draft

[注意]:我想以大写形式使用枚举常量,并在请求值时获取小写表示。

4 个答案:

答案 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