Method.invoke它可以采用什么参数?

时间:2019-01-26 02:01:04

标签: java reflection constructor parameter-passing illegalargumentexception

我在字符串中有方法名称,必须动态调用它。 方法名称。调用(对象,参数) 以上述格式,对象应该是什么? 它应该始终由createNewInstance方法创建吗? 如何使用已经构造好的对象代替它?

1 个答案:

答案 0 :(得分:2)

  

对象应该是什么?

如果方法为static,则object参数应为null

如果该方法不是static,则object参数应该是您要在其上调用该方法的对象,即该对象将是方法内this的值

  

是否总是通过createNewInstance方法创建者?

否。

  

如何使用已构造的对象代替它?

将“已构造的对象”作为object参数值。


示例

通常,您将调用如下方法:

myObj.foo("bar");

要使用反射进行相同的呼叫:

Method m = myObj.getClass().getMethod("foo", String.class);
m.invoke(myObj, "bar");