加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java与Scala功能接口的使用

发布时间:2020-12-14 17:43:37 所属栏目:Java 来源:网络整理
导读:在 Java中我可以这样做: Runnable task = () - { System.out.println("Task is running"); }; 但是Scala怎么来我也做不到! val task: Runnable = () = {println("Task is running")} 我收到编译错误!我使用的是Scala 2.11.8版. type mismatch; found : ()
在 Java中我可以这样做:
Runnable task = () -> { System.out.println("Task is running"); };

但是Scala怎么来我也做不到!

val task: Runnable = () => {println("Task is running")}

我收到编译错误!我使用的是Scala 2.11.8版.

type mismatch;  found   : () => Unit  required: Runnable

解决方法

Scala版本2.12支持将lambda表达式转换为具有“单一抽象方法”(SAM)的类型,即“ Functional Interface”,就像Java 8一样.见 http://www.scala-lang.org/news/2.12.0#lambda-syntax-for-sam-types.

早期的Scala版本无法自动将lambda表达式转换为Java功能接口/ SAM类型(例如Runnable).您最有可能使用2.12之前的版本.

您提供的代码在Scala 2.12中完全正常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读