import scala.collection.JavaConverters._
val line: List[String] = null
val myTry = Try(line.asJava)
val result = myTry match {
case Success(_) => "Success"
case Failure(_) => "Failure"
}
println(result)
Run Code Online (Sandbox Code Playgroud)
此代码段打印"成功".如果我尝试访问myTry.get,那么它会抛出一个NullPointerException.
从我的理解尝试,不应该myTry成为一个失败?
从我的理解尝试,不应该myTry成为一个失败?
具体来说,asJava在a上以Lista的形式创建一个围绕原始集合的包装器SeqWrapper.它不会迭代原始集合:
case class SeqWrapper[A](underlying: Seq[A]) extends ju.AbstractList[A] with IterableWrapperTrait[A] {
def get(i: Int) = underlying(i)
}
Run Code Online (Sandbox Code Playgroud)
如果您使用其他任何迭代集合或尝试访问它的内容,例如toSeq,您将看到失败:
import scala.collection.JavaConverters._
val line: List[String] = null
val myTry = Try(line.toSeq)
val result = myTry match {
case Success(_) => "Success"
case Failure(_) => "Failure"
}
println(result)
Run Code Online (Sandbox Code Playgroud)