2015-08-12 16 views
5

için Java'nın Integer dönüştürme ben java.lang.Integer döndüren kod Java parça var ve onu null olabilir:Scala'nın Int

:

someClass.getMyInteger

Ama bu hatayı alıyorum Scala sınıfta kullanabilir zaman

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

Ie Scala, dolaylı olarak Java'nın Integer'unu Scala'nın Int (dolaylı Integer2int yöntemini kullanarak) dönüştürmeye çalışır, ancak bu durumda Integernull istisna ile başarısız olur.

Bu sorun nasıl çözülür?

cevap

8

Bir Seçenek sarın olacaktır:

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

Ör

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 
İlgili konular