欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Scala之——Scala与Java的互操作

程序员文章站 2022-03-04 14:05:15
...

转载请注明出处:https://blog.csdn.net/l1028386804/article/details/83654966

引入scala.collection.JavaConversions里的隐式转换方法。可以在代码中使用Scala缓冲,在调用Java方法时,这些对象会被自动封装成Java列表。
举例来说,java.lang.ProcessBuilder类有一个以List<String>为参数的构造器。以下是Scala中调用它的写法:

import scala.collection.JavaConversions.bufferAsJavaList
import scala.collection.mutable.ArrayBuffer
val command = ArrayBuffer("ls", "-al", "/home/liuyazhuang")
val pb = new ProcessBuilder(command) 	//Scala到Java的转换

Scala缓冲被包装成了一个实现了java.util.List接口的Java类的对象。
反过来讲,当Java方法返回java.util.List时,我们可以让它自动转换成一个Buffer:

import scala.collection.JavaConversions.asScalaBuffer
import scala.collection.mutable.Buffer
val cmd : Buffer[String] = pb.command() //Java到Scala的转换

注意:不能使用ArrayBuffer——包装起来的对象仅能保证是个Buffer
如果Java方法返回一个包装过的Scala缓冲,那么隐式转换会将原始的对象解包出来,拿本例来说,cmd==command

相关标签: Scala