package com.ruoyi.basic.utils;
|
|
import com.ruoyi.basic.dto.SelectOptionDTO;
|
import com.ruoyi.common.enums.BaseEnum;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
public class EnumUtils {
|
public static List<SelectOptionDTO<?>> getOptions(String className) {
|
try {
|
Class<?> clazz = Class.forName(className);
|
return getOptionsByClass(clazz);
|
} catch (ClassNotFoundException e) {
|
throw new RuntimeException(e);
|
}
|
}
|
|
@SuppressWarnings("unchecked")
|
private static List<SelectOptionDTO<?>> getOptionsByClass(Class<?> clazz) {
|
if (!clazz.isEnum()) {
|
throw new RuntimeException("不是枚举:" + clazz.getName());
|
}
|
if (!BaseEnum.class.isAssignableFrom(clazz)) {
|
throw new RuntimeException("未实现 BaseEnum:" + clazz.getName());
|
}
|
return (List<SelectOptionDTO<?>>) getOptionsInternal((Class) clazz);
|
}
|
|
private static <T> List<SelectOptionDTO<T>> getOptionsInternal(
|
Class<? extends BaseEnum<T>> clazz) {
|
|
Enum<?>[] enums = (Enum<?>[]) clazz.getEnumConstants();
|
List<SelectOptionDTO<T>> list = new ArrayList<>();
|
|
for (Enum<?> e : enums) {
|
BaseEnum<T> option = (BaseEnum<T>) e;
|
list.add(new SelectOptionDTO<>(
|
option.getCode(),
|
option.getValue()
|
));
|
}
|
return list;
|
}
|
}
|