标题提出问题。基本上我使用的是一个带有String ...作为参数的java库。如何在我的scala代码中调用它?
我还会多补充一点:
来自scala代码
def myScalaFunc(params:String*) {
val myJavaClass = new JavaClass()
myJavaClass(params)
}
答案 0 :(得分:6)
您必须将params
扩展为一系列参数,而不仅仅是单个集合参数。最简单的方法是说params: _*
。
如果Java看起来像:
public class VarargTest {
public void javaFunc(String... args) {
// something
}
}
然后Scala调用者看起来像:
def scalaFunc(params: String*) =
(new VarargTest).javaFunc(params: _*)
答案 1 :(得分:5)
如果定义了方法:
void method(String... param)
然后要么像这样调用它:
method("String 1", "String 2")
或使用以下特殊语法扩展Seq:
method(Seq("String 1", "String 2"): _*)
鉴于你的示例代码(我假设我的编辑是正确的):
myJavaClass.myJavaMethod(params: _*)
答案 2 :(得分:1)
在Java中,这是接收可变数量参数的方法的语法:
void method(String... param)
在Scala中,等效的语法是:
def method (param:String*)