java.lang.Integer をもらって Option[Int] をつくるのは要注意
Java との架け橋的なものをつくると一度はハマるところですね。そういえばあまり Web 上で見かけない気がするので書いておきます。
scala> val i: java.lang.Integer = null i: java.lang.Integer = null scala> val opt: Option[Int] = Option(i) java.lang.NullPointerException at scala.Predef$.Integer2int(Predef.scala:360) at .<init>(<console>:8) at .<clinit>(<console>) at .<init>(<console>:11) at .<clinit>(<console>) at $print(<console>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:704) at scala.tools.nsc.interpreter.IMain$Request$$anonfun$14.apply(IMain.scala:920) at scala.tools.nsc.interpreter.Line$$anonfun$1.apply$mcV$sp(Line.scala:43) at scala.tools.nsc.io.package$$anon$2.run(package.scala:25) at java.lang.Thread.run(Thread.java:680) scala> val opt: Option[Int] = Option[java.lang.Integer](i).map(_.asInstanceOf[Int]) opt: Option[Int] = None
知っていても、なかなか runtime でエラーを見るまでは適切に実装できなかったりします。将来的には言語の方でよしなに対応してくれると嬉しい感じがしますね。