java判断值是枚举类型?

如何判断一个值是枚举类型?

用enum的valueof方法,如果存在返回的是枚举类型。name为null或者值不存在就抛出异常。

这里import 枚举父类,是为了方便看枚举父类,不然不知道咋看,有知道的可以教一下QAQ

import java.lang.Enum;

public enum Random {
    D,
    H,
    M,
    ;
}

class TestRandom{
    public static void main(String[] args) {
        String d = "D";
        if (Random.D == Random.valueOf(d)){
            System.out.println("true");  //true
        }

        System.out.println();

        if (Random.D == Random.valueOf(Random.class,d)){
            System.out.println("true");  //true
        }
    }
}

有两个valueof方法,一个是只要传入name,一个是传入枚举类和name。效果是一样的。

然后如果是键值对类型的enum,也是一样的用法 。

package EnumTest;

import java.lang.Enum;

public enum Random {
    D("D",1),
    H("H",2),
    M("M",3),
    ;
    Random(String name, int index) {
    }
}

class TestRandom{
    public static void main(String[] args) {
        String d = "D";
        String h = "H";
        String a = "A";
        if (Random.D == Random.valueOf(d)){
            System.out.println("true");  //true
        }

        System.out.println();

        if (Random.H == Random.valueOf(Random.class,h)){
            System.out.println("true");  //true
        }

        System.out.println();

        if (Random.D == Random.valueOf(a)){
            System.out.println("true");  
        //抛出异常IllegalArgumentException:No enum constant EnumTest.Random.A
        }
    }
}

这里要注意的是,键值对类型的enum类型必须要有 有参构造方法 ,name为value,index为key。

然后这里的第三个判断显然是有问题的,抛出异常的是valueof方法,因为这个值不属于这个枚举类型,而且该枚举类型有D,H,M三个,显然不能只拿其中一个作为判断,除非只有一个值,或者像第一第二个判断一样事先知道的情况下,可以这么做。

在项目中,因为有变量的需要。我直接定义了一个枚举变量。例如

private Random random; 

在类的某个方法中使用时,直接random = Random.valueof(d);利用try catch,如果不是所需枚举类型,直接抛出异常告诉数据格式不对。d为传过来的参数。

小白萌新,刚开始实习一个月,基础薄弱,如有错误,烦请耐心指正!

你可能感兴趣的:(java,maven)