java - 调用 Java 8 功能接口(interface)的最简洁的 Scala 方法是什么?

标签 java scala functional-programming

以 Runnable 为例。从 Scala 中调用它最简洁的方法是什么?

我目前正在这样做:

r { () => runnable-body; null; }

在声明了以下特性之后:

trait Implicits {
    def r(fun: () => Unit) = new Runnable { def run() = fun() }
}

但这有两个缺陷:

  • 只针对Runnable,不针对所有函数式接口(interface)。

  • 必须有更简洁的方式来表达这一点。与 Java 8 的更简单的 () -> runnable-body 进行比较。

最佳答案

您可以让适配器采用 () => Any 以避免需要 null

Scala 正在努力支持 Java 8 SAM 合成,但它要到 2.12 才会被标记为稳定;您可以使用 -Xexperimental 构建以在当前版本中启用它。据我所知,除此之外,每种情况都需要适配器(也许宏可以帮助生成它们)。

关于java - 调用 Java 8 功能接口(interface)的最简洁的 Scala 方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132892/

相关文章:

java - JSP 或 JavaScript 相当于 PHP 的 $_SERVER ["HTTP_HOST"]?

java - java中short和int的行为

Scala - 使用过滤器查看一个列表中的值是否与另一个列表中相同索引中的值匹配

algorithm - 简单循环太慢

用于功能接口(interface)的 Java 8 lambda 模糊方法 - 目标类型

multithreading - 纯函数式编程中的竞争条件

haskell - 寻找 `if p x then x else empty` 构造的概括

java - 这段代码中的indexOf 有什么问题?为什么当我尝试打印indexOfanswer1时得到-1?

java - 替换java准备的mysql查询语句中的字符串?

java - 从 Java 程序中获取任何类的源代码