微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自scala代码的Java 8 Stream

我正在尝试使用scala代码中的Java 8 Stream,如下所示,并且遇到编译错误.

任何帮助赞赏!!

def sendRecord(record: String): Unit throws Exception

bufferedReader.lines().forEach(s => sendRecord(s))

Cannot resolve forEach with such signature, expect: Consumer[_ >: String], actual: (nothing)

PS:尽管有一些迹象表明它几乎像https://gist.github.com/adriaanm/892d6063dd485d7dd221一样直接但它似乎不起作用.我正在运行Scala 2.11.8

解决方法:

查看您在问题中链接文件的顶部.它提到了-Xexperimental flag.如果运行scala编译器或带有此标志的repl,则scala函数将被转换为java等效项.另一个选择是手动传入java函数.

scala> java.util.stream.Stream.of("asd", "dsa").map(new java.util.function.Function[String, String] { def apply(s: String) = s + "x" }).toArray
res0: Array[Object] = Array(asdx, dsax)

您还可以创建(隐式)转换来为您包装scala函数.

您还可以等待scala 2.12,使用此版本,您将不再需要该标志.

更新

当scala 2.12出来时,有问题的代码将正常编译.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐