调用方法。如何设置参数?

时间:2013-11-29 22:22:30

标签: java class reflection

我有一个程序,我必须从列表中选择一个方法,并使用反射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或下次什么都没有?

1 个答案:

答案 0 :(得分:0)

您没有设置参数类型 - 它们已经存在且无法通过反射进行更改 - 您获取它们。你了解setter方法和getter方法之间的区别吗?

相关问题