初学者向けの Scala Tips (2) - nullからOptionへの変換
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を返さないと確信できるケースではその限りではありません)。
それでは、また。