optimize FlexEnumTypeHandler.java

This commit is contained in:
开源海哥 2023-04-18 09:01:23 +08:00
parent e8063ebecd
commit 04b98b9e69

View File

@ -37,17 +37,22 @@ public class FlexEnumTypeHandler<E extends Enum<E>> extends BaseTypeHandler<E> {
private Method getter;
public FlexEnumTypeHandler(Class<E> enumClass) {
List<Field> allFields = ClassUtil.getAllFields(enumClass, field -> field.getAnnotation(EnumValue.class) != null);
Field field = allFields.get(0);
String fieldGetterName = "get"+ StringUtil.firstCharToUpperCase(field.getName());
List<Method> allMethods = ClassUtil.getAllMethods(enumClass, method -> {
String methodName = method.getName();
return methodName.equals("get" + StringUtil.firstCharToUpperCase(field.getName()));
return methodName.equals(fieldGetterName);
});
enumPropertyType = field.getType();
enums = enumClass.getEnumConstants();
if (allMethods.isEmpty()){
throw new IllegalStateException("Can not find \"" + fieldGetterName+"()\" method in enum: " + enumClass.getName());
}
getter = allMethods.get(0);
}