【问题标题】:How to send function to call in other class in Java? [duplicate]如何发送函数以在 Java 中的其他类中调用? [复制]
【发布时间】:2018-02-21 17:56:39
【问题描述】:

我想做的是将一个函数作为参数发送给其他类的函数。 例如,我有用于 UI 的 UI.java 类和用于逻辑的 Timer.java 类。所以我想将逻辑类的函数传递给 UI,这样一旦单击按钮,它就会从 Timer.java 调用函数。

我该怎么做?推荐吗?应用程序开发标准?

【问题讨论】:

  • 您尝试过命令模式吗? en.wikipedia.org/wiki/Command_pattern
  • 有什么指南吗?可调用的 怎么样?
  • 到目前为止你尝试了什么?你能详细说明吗?有多种模式,Callable<T> 可能就是其中之一。 Function<T, R> 可能是一个替代方案,还有很多其他选择 - 这完全取决于您实际尝试做什么以及您的代码是什么样的。
  • 看看thisthis
  • 我尝试了 Callable 但在尝试时出现错误。我需要将示例代码放在我的问题中吗?

标签: java


【解决方案1】:

使用functional interface,例如Runnablemethod reference

class Bar
{
    public void doSomething() { /* ... */ }
}

class Foo
{
    private Runnable runnable;

    Foo(Runnable runnable)
    {
        this.runnable = runnable;
    }

    public void onCompletion()
    {
        this.runnable.run();
    }
}

Bar bar = new Bar();
Foo foo = new Foo(bar::doSomething);
foo.onCompletion();

您需要的确切功能界面取决于您的用例。查看the package java.util.function 以找到您需要的那个。

【讨论】:

  • 我宁愿使用Function 而不是Runnable,更好的打字方式。
  • @lexicore 它们是不同的功能接口。你不能简单地用一个代替另一个。我这里选择 Runnable 是因为它最简单。
猜你喜欢
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 2021-08-14
  • 2020-09-29
  • 1970-01-01
  • 2012-02-02
相关资源
最近更新 更多