在Java中为枚举值设置空字符串

时间:2016-10-21 04:59:53

标签: java enums

我在Java中有一个对象,我试图从具有以下结构的枚举类中设置它。

public enum Code {
    CODE_A,
    CODE_B,
    CODE_C,
    CODE_D,
    CODE_E,
    CODE_F,
    EMPTY("")
}

想要将我的对象设置为空的sting值。即 的 Object.setCode(Code.EMPTY)

当我查看我的对象时,它应该有"" 而不是 EMPTY 作为属性代码的值。

有人可以建议我可以使用的解决方法吗?我不想修改Object.setCode setter,如下所示:

public void setCode(Code code) {
    this.code = code;
}

问题还有Object.setCode(仅限于对象代码类型的MustBe

4 个答案:

答案 0 :(得分:2)

您可以简单地为每个枚举赋值并覆盖toString()方法,以便调用Code.EMPTY返回值""而不是" EMPTY"

enum Code{

    CODE_A("STRING_A"),
    CODE_B("STRING_B"),
    EMPTY("");

    // Assigning a value to each enum
    private final String code;
    Code(String code){
        this.code = code;
    }

    // Overriding toString() method to return "" instead of "EMPTY"
    @Override
    public String toString(){
        return this.code;
    }

}

因此运行Code.CODE_A将返回" STRING_A"
并且运行Code.EMPTY将返回""

答案 1 :(得分:1)

试试这个。

public enum Code {
    CODE_A,
    CODE_B,
    CODE_C,
    CODE_D,
    CODE_E,
    CODE_F,
    EMPTY("");
    final String name;
    Code(String name) { this.name = name; }
    Code() { this(null); }
    @Override
    public String toString() {
        return name == null ? super.toString() : name;
    }
}

System.out.println("CODE_A=" + Code.CODE_A);
System.out.println("EMPTY=" + Code.EMPTY);

结果:

CODE_A=CODE_A
EMPTY=

答案 2 :(得分:1)

您想将枚举值设置为字符串值吗? 它是不兼容的,所以它不起作用。试试这个:

public class Main {
    public static class Code {
        public static final String CODE_A = "A";
        public static final String CODE_B = "B";
        public static final String CODE_C = "C";
        public static final String EMPTY = "";
    }

    private String Code;

    public void setCode (String code){
        this.code = code;
    }

}

如果你现在说:

setCode (Main.Code.EMPTY);

你的变量'代码' ' Main' instance将是一个空字符串。

答案 3 :(得分:0)

尝试从EMPTY中删除空字符串参数,然后覆盖toString,如下所示:

public enum Code {
    CODE_A,
    CODE_B,
    CODE_C,
    CODE_D,
    CODE_E,
    CODE_F,
    EMPTY

    @Override
    public String toString() {
        return this == EMPTY ? "" : this.name();
    }
}

另见Enum.name()