反射获取判断枚举类是否包含指定值
获取Class类型和一个int值,判断该枚举类型是否包含该int值
测试用的枚举类:
enum EnumTest{
line(0),
abc(100),
ccd(1);
private int value;
private EnumTest(int value) {
this.value=value;
}
//获取对应value的方法名很重要
public int value(){
return this.value;
}
}
判断的工具类
class Util{
public static <T extends Enum<T>> T containsEnum(Class<T> clzz, int num) {
T[] arr = clzz.getEnumConstants();
Method value;
try {
//通过方法名获取对应的方法名,要和上一步枚举类中的方法名一致
value = clzz.getDeclaredMethod("value");
} catch (Exception e) {
return null;
}
try {
for (T item : arr) {
if (Integer.parseInt(value.invoke(item).toString()) == num) {
return item;
}
}
} catch (Exception e) {
return null;
}
return null;
}
}
测试结果
public class Test{
public static void main(String []args){
System.out.println(Util.containsEnum(EnumTest.class,100));
System.out.println(Util.containsEnum(EnumTest.class,2));
}
}
/*output:
* abc
* null
**/
本文介绍了如何通过Java反射机制检查枚举类是否包含指定的整数值。提供了一个测试枚举类和一个用于判断的工具类,通过实例展示了具体的实现过程和测试结果。
722





