覆盖Predef的隐式转换

时间:2014-05-22 20:54:08

标签: scala

我有多个返回java.lang.Integer的方法,然后使用Scala的Predef隐式转换将其隐式转换为Int,以下是它的编写方式there

implicit def Integer2int(x: java.lang.Integer): Int = x.intValue

这种转换对我来说并不令人满意,我想要的是:

implicit def Integer2int(x: java.lang.Integer): Int = 
  Option(x).getOrElse(new Integer(0)).intValue

因为Integer有时可能是null,在这种情况下,Predef的隐式转换也会返回null,我希望它为0。

我编写了自己的转换但是我一直都会收到错误,因为它已经在Predef中声明了,所以这个声明是不明确的。

我的问题是,有没有办法真正覆盖Predef的隐式转换?

1 个答案:

答案 0 :(得分:7)

您可以像这样禁用Predef导入:

import scala.Predef.{Integer2int => _}

然后根据需要重新定义Integer2int

有趣的证据:http://ideone.com/R7Zyfd