Scalaでnull
を使っていいのは小学生までだよねー、というのは冗談ですが、Scala文化圏ではOption
型です。しかし、Scalaでは困ったことにnull
を返すJavaのメソッドを呼び出さなければいけない場面がたくさんあります。
たとえば、以下のようなコードを書かなければいけない場面にはしばしば遭遇します。
val javaMap: java.util.Map[String, String] = javaObject.getMapping() val value: String = javaMap.get(key) // 型注釈はあえて付けている if(value != null) { ... } else { ... }
さて、ここで困るのが、javaMap.get(key)
はkey
に対応する値が入っていない場合null
を返すため、value
にはnull
が入る可能性があるという点です。こんなときは、Option.apply
の出番です。上のコードは次のように書き換えることができます。
val javaMap: java.util.Map[String, String] = javaObject.getMapping() val value: Option[String] = Option(javaMap.get(key)) // 型注釈はあえて付けている value match { case Some(value) ... case None => ... }
Scalaからnullを返すかもしれないJavaのメソッドを呼び出すときは、このようにOption.apply
で浄化することをこころがけましょう(もちろん、対象とするJavaのメソッドがnull
を返さないと確信できるケースではその限りではありません)。
それでは、また。