检查枚举是否为null或空。

8

我想要验证一个被发送到我的控制器的JSON,我使用的是BindingResult方法,我能够像正常一样验证字符串和其他内容。但是我不知道如何检查枚举是否为空或null。


你能发布你的实际代码吗? - Max
我真的没有任何代码可以展示。我正在向我的REST控制器发送一个JSON。该JSON绑定到我的对象,然后通过验证传递该对象。我想在我的验证中加入一个if语句,以检查“accountType”的数据是否为空。accountType是一个枚举类型。对于我的糟糕的解释,我感到抱歉。 - Shaun
2个回答

13

首先,枚举类型(Enum)不能是空的!它代表一个已定义状态的对象。可以将其想象成一个静态常量(Object),在初始化之后无法更改,但可以轻松比较。

因此,您可以检查枚举值是否为空并与现有的枚举值进行比较。

以下是有关枚举比较的基础知识:

public enum Currency {PENNY, NICKLE, DIME, QUARTER};

Currency coin = Currency.PENNY;
Currency noCoin = null
Currency pennyCoin = Currency.PENNY;
Currency otherCoin = Currency.NICKLE;

if (coin != null) {
    System.out.println("The coin is not null");
}

if (noCoin == null) {
    System.out.println("noCoin is null");
}

if (coin.equals(pennyCoin)) {
    System.out.println("The coin is a penny, because its equals pennyCoin");
}

if (coin.equals(Currency.PENNY)) {
    System.out.println("The coin is a penny, because its equals Currency.PENNY");
}

if (!coin.equals(otherCoin)) {
    System.out.println("The coin is not an otherCoin");
}

switch (coin) {
    case PENNY:
        System.out.println("It's a penny");
        break;
    case NICKLE:
        System.out.println("It's a nickle");
        break;
    case DIME:
        System.out.println("It's a dime");
        break;
    case QUARTER:
        System.out.println("It's a quarter");
        break;
}

Output: "It's a penny"

好的,你能给我一个Java中如何检查null和equals的代码示例吗? - Shaun
啊,好的,我明白了,这样更有意义,我解决了我的问题。谢谢rmertins。 - Shaun
枚举类型可以使用“==”来测试相等性,而不是使用.equals()方法。 - aakoch

8
您可以简单地使用:Objects.isNull(enumValue)

1
简单来说,我们如何检查枚举类型既为 null 又为空白的情况? - Amol Bais
只需简单地写“enumValue != null”,因为Objects.isNull仅检查是否为空引用。 - Paweł Sosnowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接