我有多个返回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的隐式转换?
答案 0 :(得分:7)
您可以像这样禁用Predef
导入:
import scala.Predef.{Integer2int => _}
然后根据需要重新定义Integer2int
。
有趣的证据:http://ideone.com/R7Zyfd