0

我正在尝试编写一个通用代码,以便我可以在运行时使用不同数量和类型的参数调用方法。我可以使用从文件中读取的类和不同的方法,以及要传递给该特定方法的参数。

所以,这是一个包含不同类型值的对象数组 -

Object[] args = new Object[]{"aString", 1, true};

/* 基于 Object java.lang.reflect.Method.invoke(Object obj, Object... args) ,我写了如下方法 */

//"executingMethod" 引用了要执行的方法,可以从 Class.forName("ClassName").getDeclaredMethods(); 并为特定的方法遍历它。

执行Method.invoke(methodClassObject, args); //显然它不会执行,因为在运行时它不知道(不能向下转换)参数“类型”。

我不想在 executionMethod.invoke(..) 中传递 args[0]、args[1]、args[2],因为在某些情况下,参数的数量可能会有所不同。

有什么建议吗?

4

1 回答 1

0

这是处理该问题的一种方法:

创建如下界面

import java.util.ArrayList;
public interface ExecutableInterface {
    void executable(String methodName);
    String getExecutableMethod();
    void setParameters(ArrayList parameters);
    ArrayList getParameters();
}

现在,在您希望可调用的类中,使其实现这些方法并使用可执行文件传递可调用方法并使用 setParameter 传递参数。

在运行时,您获取这些值并调用返回 getExecutableMethod 的可执行方法。与参数相同的方式。

于 2015-02-11T20:36:26.613 回答