【发布时间】:2021-11-10 22:49:57
【问题描述】:
我正在编写一个枚举并确保该枚举不会抛出空指针异常,因为它对于使用该枚举的客户端来说看起来很糟糕。我正在使用 Google 枚举,如果输入参数 mood is null 仍然会抛出 NPE
import com.google.common.base.Enums;
public enum KnowYourMoodEnum {
ANGRY, SAD, HAPPY, FEELING_GOOD;
private static final Set<KnowYourMoodEnum> HAPPY_MOOD_LIST = Sets.newHashSet(HAPPY, FEELING_GOOD);
private static final Set<KnowYourMoodEnum> UPSET_MOOD_LIST = Sets.newHashSet(ANGRY, SAD);
public static boolean isHappyMood(String mood) {
return HAPPY_MOOD_LIST.stream()
.anyMatch(x -> x.equals(Enums.getIfPresent(KnowYourMoodEnum.class, mood).orNull()));
}
public static boolean isUpsetMood(String mood) {
return UPSET_MOOD_LIST.stream()
.anyMatch(x -> x.equals(Enums.getIfPresent(KnowYourMoodEnum.class, mood).orNull()));
}
}
【问题讨论】:
-
"我正在编写一个枚举并确保该枚举不会引发 nullpointer 异常,因为对于使用此枚举的客户端来说它看起来很糟糕" - 不一定。如果
null是无效输入,则抛出Exception是完全可以的。但是,Exception应该会有所帮助。一个可能的候选人是IllegalArgumentException。