替换JavaConversions为JavaConverters

11
当我尝试运行基于这个示例的代码时,我会收到以下警告:
warning: object JavaConversions in package collection is deprecated (since 2.12.0): use JavaConverters

据我所知,导致警告的代码行是这些:

AFAICT,负责警告的行是这些:

import scala.collection.JavaConversions._

/* ... */

    for ((k,v) <- environmentVars) println(s"key: $k, value: $v")

import 行替换为
import scala.collection.JavaConverters._

仅仅这样还不够;只做这一步会导致错误:

error: value withFilter is not a member of java.util.Map[String,String]
    for ((k,v) <- environmentVars) println(s"key: $k, value: $v")

还需要做什么?

2个回答

15

您需要添加asScala方法:

import scala.collection.JavaConverters._

for ((k,v) <- environmentVars.asScala) println(s"key: $k, value: $v")

从Scala 2.13开始,这现在是CollectionConverters

import scala.jdk.CollectionConverters._

for ((k,v) <- environmentVars.asScala) println(s"key: $k, value: $v")

{btsdaf} - kjo
有没有更简单的方法来做这个?比如说,如果你有一个包含很多转换的文件。只需要导入JavaConversions一次就可以了,非常容易。 - Mahmoud Hanafy
@MahmoudHanafy 你说的“更容易的方法”是什么?你必须显式地调用asScala - Yuval Itzchakov
我的意思是,如果您有一个包含20个转换的文件,那么您将不得不调用asScala 20次。但以前只需导入JavaConversions._即可。 - Mahmoud Hanafy

1

提醒一下,scala.collection.JavaConverters现在已被替换为scala.jdk.CollectionConverters


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接