Scala数组到Java

Scala数组到Java,java,scala,Java,Scala,我有一个从scala类到Java的调用 private def initSpringActorContext: ConfigurableApplicationContext = { val resourceLocations = Array[String]("aopContext.xml", "akkaContext.xml") new GenericXmlApplicationContext(resourceLocations)) } java类expect pub

我有一个从scala类到Java的调用

  private def initSpringActorContext: ConfigurableApplicationContext = {
    val resourceLocations = Array[String]("aopContext.xml", "akkaContext.xml")
    new GenericXmlApplicationContext(resourceLocations))
  }
java类expect

 public GenericXmlApplicationContext(String... resourceLocations) {
        this.load(resourceLocations);
        this.refresh();
    }
我试着用
import collection.JavaConverters来强制转换这个

但我不能让它与数组一起工作


有什么建议吗?

您不需要
数组,而是varargs


您应该执行
新建GenericXmlApplicationContext(resourceLocations:*)

您不需要
数组,而是varargs


您应该执行
新建GenericXmlApplicationContext(resourceLocations:*)
GenericXmlApplicationContext
构造函数接受
变量作为参数

您可以使用
:*
语法来解决此问题

private def initSpringActorContext: ConfigurableApplicationContext = {
    val resourceLocations = Array[String]("aopContext.xml", "akkaContext.xml")
    new GenericXmlApplicationContext(resourceLocations: _*))
  }
在本例中,是对scala编译器的一个关于表达式类型的提示

是一种类型注释;它基本上是说接受varargs的任何值(
\uuu
表示任何值,
*
表示varargs)


更新:如评论中所述,
:*
是一种固定语法;所以以上的解构只是为了解释的目的

GenericXmlApplicationContext
构造函数接受
varargs
作为参数

您可以使用
:*
语法来解决此问题

private def initSpringActorContext: ConfigurableApplicationContext = {
    val resourceLocations = Array[String]("aopContext.xml", "akkaContext.xml")
    new GenericXmlApplicationContext(resourceLocations: _*))
  }
在本例中,是对scala编译器的一个关于表达式类型的提示

是一种类型注释;它基本上是说接受varargs的任何值(
\uuu
表示任何值,
*
表示varargs)


更新:如评论中所述,
:*
是一种固定语法;所以以上的解构只是为了解释的目的

哇,这真是神奇的东西,scala编译器内部到底在做什么?!谢谢你,伙计!与java不同,
String*
(scala varargs)与scala中的
Array[String]
不同。因此,我们只需要告诉编译器,我们想要通过显式输入将
数组
转换为varargs,这是通过
.*
类型完成的。哇,这是神奇的东西,scala编译器在内部到底做了什么?!谢谢你,伙计!与java不同,
String*
(scala varargs)与scala中的
Array[String]
不同。因此,我们只需要告诉编译器,我们希望通过显式键入将
数组
转换为varargs,这是通过
类型完成的。实际上,
是一种固定语法,不能用
字符串
替换
(请参阅的第4.6.2节)。@CyrilleCorpet,我更新了我的答案以强调这一点。实际上,
.*
是一种固定语法,不能用
字符串
替换
.
(参见的第4.6.2节)。@CyrilleCorpet很好,我更新了我的答案来强调这一点。thnx