我有多个返回 java.lang.Integer 的方法,然后使用 Scala 的 Predef 隐式转换将其隐式转换为 Int,下面是它的编写方式there https://github.com/scala/scala/blob/v2.11.1/src/library/scala/Predef.scala:
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
as the Integer
有时可以是null
在这种情况下,Predef 的隐式转换也会返回 null,而我希望它为 0。
我编写了自己的转换,但我不断收到错误,指出该声明不明确,因为它已在 Predef 中声明。
我的问题是,有没有办法真正覆盖 Predef 的隐式转换?
您可以禁用Predef
像这样导入:
import scala.Predef.{Integer2int => _}
然后重新定义Integer2int
如你所愿。
有趣的证明:http://ideone.com/R7Zyfd http://ideone.com/R7Zyfd
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)