首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中为Enum值设置空字符串

在Java中为Enum值设置空字符串
EN

Stack Overflow用户
提问于 2016-10-21 04:59:52
回答 4查看 18.3K关注 0票数 5

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

代码语言:javascript
复制
public enum Code {
    CODE_A,
    CODE_B,
    CODE_C,
    CODE_D,
    CODE_E,
    CODE_F,
    EMPTY("")
}

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

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

有人能建议我能用什么解决办法吗?我不想修改Object.setCode设置器,如下所示:

代码语言:javascript
复制
public void setCode(Code code) {
    this.code = code;
}

问题还在于Object.setCode(MustBe of Object-Code Type only)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-21 05:28:13

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

代码语言:javascript
复制
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将返回"“

票数 5
EN

Stack Overflow用户

发布于 2016-10-21 05:15:34

尝尝这个。

代码语言:javascript
复制
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;
    }
}

代码语言:javascript
复制
System.out.println("CODE_A=" + Code.CODE_A);
System.out.println("EMPTY=" + Code.EMPTY);

结果:

代码语言:javascript
复制
CODE_A=CODE_A
EMPTY=
票数 2
EN

Stack Overflow用户

发布于 2016-10-21 05:16:04

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

代码语言:javascript
复制
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;
    }

}

如果你现在说:

代码语言:javascript
复制
setCode (Main.Code.EMPTY);

“Main”实例的变量“代码”将是空字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40168744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档