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

Scala将原语隐式转换为AnyRef

发布时间:2020-12-16 18:18:25 所属栏目:安全 来源:网络整理
导读:在我写的 Scala代码中,我有一个Map [String,AnyRef].当我尝试使用以下内容初始化Map时,Scala抱怨它期望Map [String,AnyRef],但值是Map [String,Any]: val myMap: Map[String,AnyRef] = Map("foo" - true,"bar" - false) 我知道我可以使用以下代码: val myM
在我写的 Scala代码中,我有一个Map [String,AnyRef].当我尝试使用以下内容初始化Map时,Scala抱怨它期望Map [String,AnyRef],但值是Map [String,Any]:

val myMap: Map[String,AnyRef] =
  Map("foo" -> true,"bar" -> false)

我知道我可以使用以下代码:

val myMap: Map[String,AnyRef] =
  Map("foo" -> true.asInstanceOf[AnyRef],"bar" -> false.asInstanceOf[AnyRef])

我在范围内声明了以下内容:

implicit def booleanToAnyRef(value: Boolean): AnyRef = value.asInstanceOf[AnyRef]

但编译器仍然抱怨.

编译器是否应该使用隐式方法将原始布尔值转换为AnyRef值?有没有办法,缺少(丑陋的)x.asInstanceOf [AnyRef]来转换这些?

解决方法

为了记录,正如其他答案所示,最新的编译器会说:

Note: an implicit exists from scala.Boolean => java.lang.Boolean,but
methods inherited from Object are rendered ambiguous. This is to
avoid a blanket implicit which would convert any scala.Boolean to any
AnyRef. You may wish to use a type ascription: x: java.lang.Boolean.

最新的编译器将永远是一个朋友,他提供比你曾经常常和朋友一起陷入困境的朋友更好的建议.

(编辑:李大同)

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

    推荐文章
      热点阅读