我有一些需要调用Java 7方法的Scala代码,该方法定义如下:
public void addListener(InputListener listener, String... mappingNames) {
<details omitted here for brevity>
}
以下是调用addListener
的我的Scala代码:
inputManager.addListener(myListener, getActionInputs())
// Then the getActionInputs method:
def getActionInputs() : Array[String] = {
Array("Red", "Fruit", "Cow")
}
这会产生编译器错误:
类型mistmatch,expected:String,actual:Array [String]
我尝试导入Java / Scala转换类以将我的Scala Array[String]
转换为Java数组,但尚未成功。关于修复是什么的任何想法?
答案 0 :(得分:7)
您需要添加:_*
才能将Array[String]
转换为varargs:
爪哇:
public class C {
public void addListener(String... mappingNames) {
System.out.println(Arrays.toString(mappingNames));
}
}
Scala的:
def main(args: Array[String]): Unit = {
val c = new C
c.addListener(Array("a", "b", "c") :_*)
}
收率:
[a, b, c]