From f17a5bd2895c67e63525e9401128efe095a7bd2b Mon Sep 17 00:00:00 2001 From: sige Date: Fri, 22 Mar 2024 17:12:46 +0800 Subject: [PATCH] ~ --- .../diframe/util/DiClassHelper.java | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/util/DiClassHelper.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/util/DiClassHelper.java index fd2a445..60e7676 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/util/DiClassHelper.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/util/DiClassHelper.java @@ -1,6 +1,8 @@ package com.my.graphiteDigesterBg.diframe.util; import java.io.File; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; import java.net.JarURLConnection; import java.net.URL; import java.util.ArrayList; @@ -8,8 +10,27 @@ import java.util.Collections; import java.util.Enumeration; import java.util.List; import java.util.jar.JarEntry; - public class DiClassHelper { + // invoke method + public static Object invokeMethod(Object obj, String methodName, List args) throws NoSuchMethodException { + try { + Class[] parameterTypes = new Class[args.size()]; + for (int i = 0; i < args.size(); i++) { + parameterTypes[i] = args.get(i).getClass(); + } + Method method = obj.getClass().getMethod(methodName, parameterTypes); + + if ( method.getReturnType().equals(Void.TYPE) ) { + method.invoke(obj, args.toArray()); + return null; + } else { + return method.invoke(obj, args.toArray()); + } + } catch (IllegalAccessException | InvocationTargetException e) { + throw new RuntimeException(e); + } + } + // get all classes in package public static List> getAllClassesInPackage(String packageName) { List> classes = new ArrayList<>();