使用Scala中的Option包装Java中的null返回方法?

假设我有一个方法
session.get(str: String): String
但你不知道它是否会返回一个字符串或null,因为它来自Java。 有没有更简单的方法来处理Scala而不是
session.get("foo") == null
?也许某些魔法适用于
ToOption(session.get("foo"))
然后我可以像Scala一样对待它
ToOption(session.get("foo")) match {
    case Some(_) =>;
    case None =>;
}
    
已邀请:
Option
伴侣对象的
apply
方法用作来自可空引用的转换函数:
scala> Option(null)
res4: Option[Null] = None

scala> Option(3)   
res5: Option[Int] = Some(3)
    
Option
对象有一个
apply
方法就是这样做的:
var myOptionalString = Option(session.get("foo"));
    
请注意,使用Java对象时,它将无法按预期工作:
val nullValueInteger : java.lang.Integer = null
val option: Option[Int] = Option(nullValueInteger)
println(option)  // Doesn't work - zero value on conversion

val nullStringValue : String = null
val optionString: Option[String] = Option(nullStringValue)
println(optionString) // Works - None value
    

要回复问题请先登录注册