java - Scala 12.x 和 Java 11 `String.lines`,如何在链式调用中强制进行隐式转换?
问题描述
问题描述
Scala StringOps 提供了一个lines
返回Iterator[String]
. Java 11 添加lines()
了返回类型java.Stream[String]
。
在像这样的链式方法调用中
val text: String
text.lines.foldLeft("")(_ + _)
代码将不再编译并抛出foldLeft
未在 java.Stream[String] 上定义的异常。据我了解,不再应用隐式解析,因为现在已经在 java.String 中找到了 lines 方法。
我如何表达我希望应用隐式(没有括号的那个)而不是 java.String.lines()
附加信息
- 我找到
linesIterator
了,但它已被弃用。 - 降级是一种选择,但有没有办法解决它。
val text : StringOps
看起来真的很难看,但解决了,但我对这个解决方案不满意
解决方案
StringOps#lines
和 jdk11之间的冲突java.lang.String#lines
是 scala 中的一个错误,请参阅 issue 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>
推荐阅读
- r - `rep()` 向量不同的长度
- python - GitHub Actions:工作流程永无止境
- vue.js - 从方法中动态返回自定义组件
- android - 无法识别的 VM 选项“MaxPermSize=2048m”
- c++ - 编码初学者,卡在识别 C++ 中的质数的代码中......有人可以纠正这段代码中的错误吗?
- python - 将具有依赖关系的 .py 文件转换为 .exe
- c# - 在 SendGrid 中添加联系人并获取联系人 ID
- c# - 有条件地提供 ASP.NET Identity OAuth 令牌
- powerbi - 错误消息:R 脚本错误。错误:出现意外符号:“# Epilog - Auto Generated # setwd” 执行停止
- java - Hibernate 不会在 MySql 中自动创建数据库中不存在的表,但我没有收到任何错误