2015-08-12 19 views
5

ho Java pezzo di codice che restituisce java.lang.Integer e può essere null:Convertire Integer di Java per di Scala Int

someClass.getMyInteger

Ma quando lo uso nelle classi Scala che sto ricevendo questo errore:

Caused by: java.lang.NullPointerException at scala.Predef$.Integer2int(Predef.scala:357)

Ie Scala tenta implicitamente di convertire Java (utilizzando il metodo Integer2int) di Scala con 230, ma poiché in questo caso Integer è null, non riesce con eccezione.

Come risolvere questo problema?

risposta

8

avrei avvolgerla in un'Opzione:

val x = Option(someClass.getMyInteger).map {_.toInt} 

esempio

scala> val oneInt: java.lang.Integer = 1 
oneInt: Integer = 1 

scala> val nullInt: java.lang.Integer = null 
nullInt: Integer = null 

scala> val oneOpt: Option[Int] = Option(oneInt).map {_.toInt} 
oneOpt: Option[Int] = Some(1) 

scala> val nullOpt: Option[Int] = Option(nullInt).map {_.toInt} 
nullOpt: Option[Int] = None