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

Scala 12.x和Java 11` String.lines`,如何在链式调用中强制隐式

发布时间:2020-12-16 09:59:01 所属栏目:安全 来源:网络整理
导读:问题描述 Scala StringOps提供了一个返回Iterator [String]的行方法. Java 11添加了带有返回类型java.Stream [String]的lines(). 在一个链式方法调用中 val text: Stringtext.lines.foldLeft("")(_ + _) 代码将不再编译并抛出一个不在java.Stream [String]上
问题描述
Scala StringOps提供了一个返回Iterator [String]的行方法.
Java 11添加了带有返回类型java.Stream [String]的lines().

在一个链式方法调用中

val text: String
text.lines.foldLeft("")(_ + _)

代码将不再编译并抛出一个不在java.Stream [String]上定义foldLeft的exeption.
据我所知,隐式解析不再适用,因为现在已经在java.String中找到了lines方法.

我如何表达我希望隐式被应用(没有parens的那个)而不是java.String.lines()

附加信息

>我找到了linesIterator但它已被弃用.
>降级是一种选择,但有办法绕过它.
> val文本: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>

(编辑:李大同)

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

    推荐文章
      热点阅读