And*_*ann 7 java string scala java-11
问题描述
Scala StringOps提供了一个lines返回的方法Iterator[String].Java 11添加lines()了返回类型java.Stream[String].
在一个链式方法调用中
val text: String
text.lines.foldLeft("")(_ + _)
Run Code Online (Sandbox Code Playgroud)
代码将不再编译并抛出foldLeft未在java.Stream [String]上定义的exeption .据我所知,隐式解析不再适用,因为现在已经在java.String中找到了lines方法.
我如何表达我希望隐式被应用(没有parens的那个)而不是java.String.lines()
附加信息
linesIterator但它被弃用了.val text : StringOps 看起来很丑,但解决了它,但我对这个解决方案不满意StringOps#lines和jdk11 之间的冲突java.lang.String#lines是scala中的错误,请参阅问题11125.
此错误的修复方法是取消弃用linesIterator,这在2.12.7中完成.
Welcome to Scala 2.12.7 (OpenJDK 64-Bit Server VM, Java 11).
scala> "a".lines
res0: java.util.stream.Stream[String] = java.util.stream.ReferencePipeline$Head@2df259d0
scala> "a".linesIterator
res1: Iterator[String] = <iterator>
Run Code Online (Sandbox Code Playgroud)
您可以强制 Scala 使用隐式转换为StringOps,这将使用旧lines方法:
(text: StringOps).lines.foldLeft("")(_ + _)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
539 次 |
| 最近记录: |