public class EnumUtils {
/**
* 根据属性值获取首个对应的枚举类
*
* @param clazz 枚举类Class
* @param fieldName 属性名
* @param fieldValue 属性值
* @param <E>
* @param <P>
* @return
*/
public static <E extends Enum<E>, P> E getFirstEnumByField(final Class<E> clazz, String fieldName, P fieldValue) {
try {
if (clazz.isEnum()) {
for (int i = 0; i < clazz.getEnumConstants().length; i++) {
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
if (Objects.nonNull(field.get(clazz.getEnumConstants()[i]))) {
if (field.get(clazz.getEnumConstants()[i]).equals(fieldValue)) {
return clazz.getEnumConstants()[i];
}
} else if (Objects.isNull(field.get(clazz.getEnumConstants()[i])) && Objects.isNull(fieldValue)) {
return clazz.getEnumConstants()[i];
}
}
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}
通用枚举工具类
最新推荐文章于 2024-08-03 21:02:21 发布