1

Javaリストがあると想像してください

val javaList: java.util.List[String] = null

これを scala コレクションとして使用したい場合は、たとえば Buffer を使用します。次のインポートを追加するだけです (前に何度も説明したように)。

import scala.collection.JavaConversions._

問題は、リストが null と異なるかどうかを確認する必要があることです。これは機能しません:

javaList foreach println          //throws java.lang.NullPointerException

nullがBuffer.emptyに変換されるような方法でJavaリストをscalaコレクションに変換する簡単な方法はありますか? オプション ファクトリに似たもの:

Option(null)                      //> res0: Option[Null] = None
asScalaBuffer(javaList)           // I wish this to be ArrayBuffer()
4

2 に答える 2

6

それをマップしてOptionで作業するだけです

Option(javaList).map(asScalaBuffer).getOrElse(ArrayBuffer.empty)

アップデート

それでも配列/リストのファクトリが必要な場合はnull、「コンストラクターメソッド」でシミュレートできます(Rex Kerrの回答に基づいて):

def ArrayBuffer[T](jl: JavaList[T]) = if (jl == null) ArrayBuffer.empty[T] else asScalaBuffer(jl)

そして、それを次のように使用ArrayBuffer(null.asInstanceOf[JavaList[String])しますOption.apply

def apply[A](x: A): Option[A] = if (x == null) None else Some(x)
于 2013-07-08T14:40:45.997 に答える