Java 调用方法接收器?
我的Java 调用方法接收器?,java,Java,我的main类中有一个返回整数值的方法。 我将此方法发送给另一个类,该类尝试调用此方法。像这样: newVal = (Integer) calcM.invoke(receiver, start+i); 但是我不知道把什么作为接收器此不起作用。在您的示例中,接收器是将调用其方法的接收器对象 这样想,当你说myObject.myMethod时,它会在myObject上调用myMethod。invoke也是一样,它需要知道在哪个对象上调用该方法。因此,在本例中,您将myObject传递到invoke
main类中有一个返回整数值的方法。
我将此方法发送给另一个类,该类尝试调用此方法。像这样:
newVal = (Integer) calcM.invoke(receiver, start+i);
但是我不知道把什么作为接收器
此
不起作用。在您的示例中,接收器
是将调用其方法的接收器对象
这样想,当你说myObject.myMethod
时,它会在myObject
上调用myMethod
。invoke也是一样,它需要知道在哪个对象上调用该方法。因此,在本例中,您将myObject
传递到invoke中。如果您的方法是静态的,则正确的接收器是null
。否则,它就是您要调用该方法的对象。您的问题所建议的样子,您的接收器将是这样的:
Method receiver = MainClass.class.getMethod("methodOfMainClass", int.class);
听起来像是你的方法calcM.invoke
的签名是
public Integer invoke(Method method, int number)
所以我可以打电话
newVal = (Integer)calcM.invoke(receiver, start+i);
接收器没有类型-我只是输入了“接收器”一词,所以你知道它应该在哪里。invoke是一个将反射的方法应用于另一个类的方法。它期望接收者是客观的,我在第二眼看到,当我意识到calcM已经是反射的方法:)但有时没有客观的,对吗?您还可以执行类似val=getValue()的操作;在你刚才给出的例子中没有接收者反对<代码>此
是正在调用的对象。然后将此
传递给invoke方法。否。这是this.getValue()的缩写,这是对Tobias的响应,但“this”不起作用,就像我说的。至少它似乎不起作用;也许代码中的其他地方有更大的错误。我没有说要对你的接收器使用这个
,只是在你的小例子中。在实际代码中,需要传入需要调用其方法的对象。