我有一个程序,我必须从列表中选择一个方法,并使用反射invoke()
调用其方法。
我在为每个方法设置参数时遇到问题。 正如您在代码中看到的那样:
Class c = String.class;
Class[] parameterTypes = new Class[] { String.class };
Method concatMethod;
Object[] arguments = new Object[] { secondWord };
try {
concatMethod = c.getMethod(metto, parameterTypes);
result = (String) concatMethod.invoke(firstWord, arguments);
} //some catches (…)
例如对于simple_method(让它为“toString”)没有参数。但是例如对于“concat” - 还有1个额外的String。
lista中的get metto ,它从这里获取方法:
Method mets[] = null;
for (Method m : mets) {
if (m.getDeclaringClass() == actionClass) {
String parame = "";
Class[] paramTypes = m.getParameterTypes();
for (Class c : paramTypes) {
if(!parame.equals("")) parame += " , " + c.getName();
else parame = c.getName();
}
String name = m.getName();
lista.add(method);
}
}
我的问题是如何设置parameterTypes以获取String或下次什么都没有?
答案 0 :(得分:0)
您没有设置参数类型 - 它们已经存在且无法通过反射进行更改 - 您获取它们。你了解setter方法和getter方法之间的区别吗?