非空对象如非空对象?

TER*_*ytE 1 java null enums

我有一些代码获取枚举的值:

StringUtils.isEmpty(getEnumMember().value());
Run Code Online (Sandbox Code Playgroud)

支持代码如下所示:

public CustomEnum getEnumMember() {
    return enumMember;
}

----

public enum CustomEnum {

    TEXT1("text1"),
    TEXT2("text2"),
    TEXT3("text3");

    private final String value;

    CustomEnum(String v) {
        value = v;
    }

    public String value() {
        return value;
   }

   ...
}
Run Code Online (Sandbox Code Playgroud)

我想知道getEnumMember是否有办法以与处理null对象相同的方式处理空枚举.例如:

public CustomEnum getEnumMember() {
    if (enumMember ==null) {
        return new CustomEnum();
    }
    return enumMember;
}
Run Code Online (Sandbox Code Playgroud)

但我不能实例化一个"新的CustomEnum".你将如何处理这个,以便getEnumMember()不会返回null?我不想为"ENUM_IS_NULL("")"创建一个特殊的枚举值.

Car*_*ter 8

当您创建枚举时,您会说该类型的任何变量都将具有已定义的值列表之一 - 或者为null.这是不可避免的.因此,您必须接受null,或者确定一个合适的值 - 无论它是您现有的枚举值还是您添加的新值.这些是您唯一的选择.代码return new CustomEnum();没有意义; 您必须选择其中一个枚举值,并且必须指定哪一个.