什么相当于字符串...在scala中

时间:2012-03-21 19:04:52

标签: java scala

标题提出问题。基本上我使用的是一个带有String ...作为参数的java库。如何在我的scala代码中调用它?

我还会多补充一点:

来自scala代码

def myScalaFunc(params:String*) {
   val myJavaClass = new JavaClass()
   myJavaClass(params)
}

3 个答案:

答案 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*)