方法调用数组中的参数

时间:2016-07-15 22:34:57

标签: java methods invoke

我正在尝试调用一个方法对象,对于一个未知的类,参数将在一个字符串数组中,如何在调用方法对象时将其作为参数传递?

例如

method.invoke(obj, arg1, arg2,...);

我有

String[] args = {"arg1", "arg2"...}

根据用户输入,字符串数组每次都会不同,从而产生不同的参数。

1 个答案:

答案 0 :(得分:1)

如果该对象的方法只有String的参数或String的任何Compatible类型,则可以将args作为整体传递。 更改 String [] args = {“arg1”,“arg2”...}; 对象[] args = {“arg1”,“arg2”...}; 像这样 : method.invoke(obj,args);

确保获得方法对象时:class.getMethod(“method”,types); arg类型必须与您将传递的args的数量和类型相匹配。 例如 : Class [] types = {String.class,String.class,String.class}; 与...匹配 对象[] args = {“arg1”,“arg2”,“arg3”}; 但没有 对象[] args = {“arg1”,“arg2};

动态调用

假设方法只接受字符串(否则你需要更复杂的映射) psedo代码:

方法:

获取方法名称。

示例:print //存储在变量methodName

参数数量:

获取用户输入的列表或数组

示例:args = {“bla”,“bla”...}

类型:

有类型arraylist。

每个arg的

,Do arraylist.add(String.class)//或任何其他类if if不是String

Class [] types = {};

types = arraylist.toArray(types);

现在您需要打电话:

someClass.getMethod(methodName,types).invoke(instanceofSomeClass,args); // this

适用于用户输入的任何参数