【问题标题】:Method.invoke what parameter it can take?Method.invoke 可以带什么参数?
【发布时间】:2023-03-29 11:35:01
【问题描述】:

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

【问题讨论】:

  • Java 不会根据实例化的方式来区分对象。您可以在任何合适类型的对象上反射性地调用方法。

标签: java reflection constructor parameter-passing illegalargumentexception


【解决方案1】:

对象应该是什么?

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

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

是否应该始终通过 createNewInstance 方法创建?

没有。

如何使用已经构建的对象来代替它?

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


例子

通常,您会调用这样的方法:

myObj.foo("bar");

使用反射进行同样的调用:

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

【讨论】:

    猜你喜欢
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    相关资源
    最近更新 更多