我在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 )
答案 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()
。