Scala数组到Java
我有一个从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
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