我想调用具有参数接口的方法(使用反射) - 即:列表但具有列表的实现。例如:
public class Test {
public static void main(String[] args) throws NoSuchMethodException {
Method method = Test1.class.getMethod("method", new Class[]{ArrayList.class});
}
public class Test1 {
public void method(List list) {
System.out.println("method");
}
}
}
我明白了NoSuchMethodException
。在这种情况下,我知道我得到了哪些参数,问题是当我不“静态地”知道参数类型时,我通常想使用它。
getMethod 是否也可能返回以接口为参数的方法?或者我必须编写自己的“方法搜索器”
谢谢你。
编辑: 这要复杂得多。我正在尝试在我的程序中编写类似“动态模块化架构”的东西。我有核心,它应该与其他模块通信。所以我不知道编程时的参数类,但在运行时。
public Object processMessage(String target, String methodName, List<Object> params, Object returnNonExist) {
Module m = modules.get(target);
if (m == null) {
return returnNonExist;
} else {
Class[] paramsTypes = new Class[params.size()];
for (int i = 0; i < params.size(); i++) {
paramsTypes[i] = params.get(i).getClass();
}
}
try {
Method method = m.getClass().getMethod(methodName, paramsTypes);
Object result = method.invoke(m, params.toArray());
return result;
}
这个会比较好吗?