ScalaとJavaの相互運用

1013 ワード

1.ScalaにおけるArrayBufferとJavaにおけるArrayListの変換
たとえばjava.lang.ProcessBuilderクラスにリストをパラメータとするコンストラクタがあり、scalaでの呼び出し方法は次のとおりです.
import scala.collection.JavaConversions.bufferAsJavaList
import scala.collection.mutable.ArrayBuffer
val command = ArrayBuffer("ls", "-al", "/home/cay")
val pb = new ProcessBuilder(command)  //scala   Java    
import scala.collection.JavaConversions.asScalaBuffer
import scala.collection.mutable.Buffer
val cmd: Buffer[String] = pb.command()

ProcessBuilderの構築にはjava.util.Listオブジェクトが必要です.暗黙変換をインポートすることで、ArrayBufferオブジェクトはjava.util.Listオブジェクトに自動的に変換され、pb.command()はjava.util.Listオブジェクトを返し、暗黙変換によりBufferオブジェクトに自動的に変換されます.
2.ScalaにおけるIntとJavaにおけるIntegerの変換
val arrInt = Array(1, 2, 3)
val arrInteger = arrInt.map{(x:Int) : java.lang.Integer}

scalaのListをJava Listに変換する必要がある場合
import scala.collection.JavaConverters._

val listJava = arrInteger.toList.asJava