【问题标题】:Add to Scala List of type List[(Int) => Unit] from Java [duplicate]从Java添加到类型List [(Int)=> Unit]的Scala列表[重复]
【发布时间】:2017-09-05 23:11:28
【问题描述】:

我正在开发一个同时包含 Scala 和 Java 代码的项目。我有一个 Scala 方法定义为:

var responseListeners: List[(Int) => Unit]

  def addResponseListener(onResponse: Int => Unit) {
    responseListeners ::= onResponse
  }

这个方法在 Scala 中被调用为:

addResponseListener(id => processors(id).wakeup())

现在我有一些 Java 代码可以访问 processors 数组,但如何从 Java 调用 addResponseListener(onResponse: Int => Unit)?

【问题讨论】:

    标签: java scala


    【解决方案1】:

    使用来自scala.runtime的AbstractFunction1:

    AbstractFunction1<scala.lang.Int, Void> f = (i) -> doWorkWith(i);
    

    如果 doWorkWith 没有返回 void,您需要从 lambda 中返回 return null;:

    i -> {
      doWorkWith(i);
      return null;
    }
    

    另见:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-03
      • 2021-06-17
      • 2023-03-08
      • 2016-09-28
      • 2019-06-10
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多