diff --git a/basic-util/src/main/java/ink/wgink/util/ReflectUtil.java b/basic-util/src/main/java/ink/wgink/util/ReflectUtil.java index aaff7374..4e92cad5 100644 --- a/basic-util/src/main/java/ink/wgink/util/ReflectUtil.java +++ b/basic-util/src/main/java/ink/wgink/util/ReflectUtil.java @@ -1,13 +1,13 @@ package ink.wgink.util; -import org.apache.commons.collections.KeyValue; -import org.apache.commons.collections.keyvalue.DefaultKeyValue; import org.apache.commons.lang3.StringUtils; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -22,6 +22,35 @@ import java.util.Map; **/ public class ReflectUtil { + /** + * 获取接口实例,实例必须有无参构造方法 + * + * @param instanceClassNames 实现类名 + * @param interfaceClass 接口 + * @param + * @return + * @throws ReflectException + */ + public static List listInterfaceInstance(List instanceClassNames, Class interfaceClass) throws ReflectException { + if (instanceClassNames == null || instanceClassNames.isEmpty()) { + throw new ReflectException("instanceClassNames 不能为空"); + } + if (interfaceClass == null) { + throw new ReflectException("interfaceClass 不能为空"); + } + List instances = new ArrayList<>(); + try { + for (String instanceClassName : instanceClassNames) { + Class clazz = Class.forName(instanceClassName); + T instance = (T) clazz.getConstructor().newInstance(); + instances.add(instance); + } + } catch (ClassNotFoundException | InvocationTargetException | InstantiationException | IllegalAccessException | NoSuchMethodException e) { + e.printStackTrace(); + } + return instances; + } + /** * 获取单例对象 *