非空对象如非空对象?

时间:2011-03-01 18:45:40

标签: java enums null

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

StringUtils.isEmpty(getEnumMember().value());

支持代码如下所示:

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;
   }

   ...
}

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

public CustomEnum getEnumMember() {
    if (enumMember ==null) {
        return new CustomEnum();
    }
    return enumMember;
}

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:3)

无法完成。枚举的部分想法是枚举所有可能的值,并且不能只添加更多值。

你要么必须这样做:

public enum CustomEnum {

    TEXT1("text1"),
    TEXT2("text2"),
    TEXT3("text3"),
    ENUM_IS_NULL("");
   ...
}

或:

StringUtils.isEmpty(getEnumMember() == null? "" : getEnumMember().value());

或处理NullPointerException

中的StringUtils.isEmpty
相关问题