【问题标题】:Accessing listener method parameter from another method从另一个方法访问侦听器方法参数
【发布时间】:2019-09-22 18:35:08
【问题描述】:

我正在尝试执行以下操作。我有一个方法foo(),从那个方法我调用方法doSomeWork()。我还有一个侦听器MytListener,它侦听doSomeWork(),并在doSomeWork() 完成时调用方法onExecution()。

public void foo() {
    doSomeWork();
    // wait until doSomeWork is complete
    // access output from method onExecution
    // do some actions with output
}

public class MyListener implements Listener {
    void onExecution(Output output) {}
}

我的目标是等到方法doSomeWork 完成,然后从方法foo 内部访问output。是否真的有可能实现这一目标,您能否就如何实现这一目标提供一些建议?

【问题讨论】:

  • 那么 foo() 与 MyListener 属于不同的类吗?
  • 这是一个奇怪的逻辑流程。为什么不在MyListener 上调用foo() 的任何类的方法,然后进行一些输出操作?
  • @FailingCoder 不需要,foo() 可以在 MyListener 类中。
  • @Augusto Object 只有在调用监听方法 onExecution 时才会创建输出。我只能对 onExecution 方法内部的输出执行一些操作。很抱歉,如果它令人困惑。

标签: java concurrency listener


【解决方案1】:

您甚至不需要 Listener 类。您需要做的就是:

public void foo(){
    doSomeWork();
    onExecution(null); // This method will only execute AFTER doSomeWork has been completed
}
void onExecution(Output output) {}

【讨论】:

  • 但是那个“价值”从何而来?在我的情况下,onExecution 在侦听器内部,当它被调用时,我有非空对象输出。
  • value 是您想要的任何值
  • 让我澄清一下。我有一个带有 onExecute 方法的第三方库侦听器,当调用该方法时,它已经创建了非空输出对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
  • 2017-05-12
相关资源
最近更新 更多