/**
* @author zhangchucheng
* @create 2021/12/1
*/
public class EnumUtils {
/**
* 枚举转化为List
* @param enumClass 枚举类
* @param t List中对象类
* @return
*/
public static <S extends Enum<S>, T> List<T> enumToList(Class<S> enumClass, Class<T> t){
//如果不是enum
if (!enumClass.isEnum()) {
throw new ApiException("不是枚举类型");
}
List<T> list = new ArrayList<>();
try {
// 获取类T中的属性名
List<String> tFieldnames = new ArrayList<>();
Field[] tFields = t.getDeclaredFields();
for (Field f : tFields){
tFieldnames.add(f.getName());
}
// 获取类T和枚举S中共有的属性名
List<String> fieldNames = new ArrayList<>();
Field[] sFields = enumClass.getDeclaredFields();
for (Field f : sFields){
String fName = f.getName();
if(tFieldnames.contains(fName)){
fieldNames.add(fName);
}
}
if(fieldNames.size() == 0){
return null;
}
Enum[] enums = null;
Method m = enumClass.getDeclaredMethod("values", (Class[]) null);
enums = (Enum[]) ((Enum[]) m.invoke((Object) null, (Object[]) null));
T bean;
for(Enum e : enums){
bean = t.newInstance();
for (String fieldName : fieldNames){
Field efield = e.getClass().getDeclaredField(fieldName);
Field tfield = bean.getClass().getDeclaredField(fieldName);
efield.setAccessible(true);
tfield.setAccessible(true);
tfield.set(bean, efield.get(e));
}
list.add(bean);
}
} catch (Exception e){
throw new ApiException("枚举转list失败");
}
return list;
}
}
枚举转化为List工具类
猜你喜欢
转载自blog.csdn.net/LC_Liangchao/article/details/121857764
今日推荐
周排行