有一段时间我一直在努力将scala与可能返回null的java方法集成。我提出了以下实用程序,它有很多帮助:
// produce an Option, nulls become None
object Maybe {
def apply[T](t:T) = if (t==null) None else Some(t)
}
Maybe(javaClass.getResultCouldBeNull()).map( result => doSomeWork(result) )
我对此解决方案有几个问题:
答案 0 :(得分:8)
Scala的内置Option正是您要重新发明的目标。
在那种情况下:
scala> val sOpt: Option[String] = Option(null)
sOpt: Option[String] = None
答案 1 :(得分:1)
为什么要打扰一个完整的伴侣对象呢?它只是一个函数,因此您不需要将其实现为看起来像函数的对象。
object MyUtilities{
// a whole bunch of other utilities that you use all over can also be put in this class.
def maybe[T](t:T) = if (t==null) None else Some(t)
}