【发布时间】:2015-03-15 12:31:05
【问题描述】:
我有一个名为 A 的 Void 方法,以及一个从 A 返回 Object 的方法,名为 C。
方法A是一个叫B的方法调用的响应,它只发送一个请求让方法A响应,我想发送响应,等待它然后在同一个方法上返回(方法C)。
方法 A 是来自超类的方法,所以我不能修改它。 该方法是 API 的方法,我称它为提供我想要的参数,然后方法 A 将使用该参数进行响应。
我也希望是线程安全的,因为响应需要准确,否则程序会失败。
方法A的:
@Override
public void onMessageReceived(Object response) {
//The args of the method is what I want to return in method C.
}
方法 B:
requestResponse(data);
方法 C:
public Object sendMessage(byte[] data) {
requestResponse(data);
return /* THE RESPONSE FROM METHOD A */;
}
我曾尝试在方法 A 中做一些事情,例如:
this.response = response;
在方法 C 中:
return this.response;
但我不认为这是安全和实用的。 我还考虑过每次请求都创建一个新实例,但这会占用大量内存和时间。 方法 C 不能花时间返回响应。 有人告诉我使用 Future 或其他类,但我真的很困惑,我不知道该怎么做。 我可以有尽可能多的实例来发送我想要的请求,但我只能有一个返回响应的类,因此只有一个继承方法为请求响应的其他类提供响应。
感谢您的宝贵时间。
【问题讨论】:
-
你不能从 void 方法返回任何东西。这就是空的意思。
-
我不明白你的意思...
-
请编辑您的问题,使其具有更真实的标题。诸如“通过回调返回值”之类的内容应该有助于获得有用的答案。
-
另外,我建议您一次迈出一步。首先解决如何使用您拥有的方法和约束来获得响应。然后,看看如何让一切都异步。
-
好的,谢谢 Magnamag
标签: java concurrency