我有一些代码可以获取枚举的值:
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(”“)”创建一个特殊的枚举值。
答案 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