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”不起作用,就像我说的。至少它似乎不起作用;也许代码中的其他地方有更大的错误。我没有说要对你的接收器使用
这个
,只是在你的小例子中。在实际代码中,需要传入需要调用其方法的对象。