我试图编写一个通用代码,这样我就可以在运行时调用方法,使用不同的数字&参数类型。我有班级和班级我从文件中读取的不同方法,以及要传递给特定方法的参数。
所以,这是一个包含不同类型值的对象数组 -
Object [] args = new Object [] {“aString”,1,true};
/ *基于Object java.lang.reflect.Method.invoke(Object obj,Object ... args),我写了以下方法* /
//“executionMethod”引用要执行的方法,可以从Class.forName(“ClassName”)获取.getDeclaredMethods();并针对特定方法遍历它。
executionMethod.invoke(methodClassObject,args); //显然它不会执行,因为在运行时它不知道(不能转发)param“Type”。
我不想在executionMethod.invoke(..)中传递args [0],args [1],args [2],因为在某些情况下,参数的数量可能会有所不同。
有任何建议吗?
答案 0 :(得分:0)
以下是处理该问题的一种方法:
创建以下界面
import java.util.ArrayList;
public interface ExecutableInterface {
void executable(String methodName);
String getExecutableMethod();
void setParameters(ArrayList parameters);
ArrayList getParameters();
}
现在,在要调用的类中,使其实现这些方法并使用可执行文件传递invokable方法并使用setParameter传递参数。
在运行时,您将获取这些值并调用返回getExecutableMethod的可执行方法。与参数相同。