F0R*_*0RR 10 scala scala-java-interop scala-collections
为什么所有scala vararg方法,当从java中使用时,似乎接受Seq变量,并且不能用作java本机vararg方法.这是一个错误吗?
例如,Buffer
有方法def append(elems: A*): Unit
.但在java中它有另一个签名:void append(Seq<A>)
.
lmm*_*lmm 17
如果您控制scala代码,则可以使用@varargs使其生成与java兼容的varags方法,例如 @varargs def append(elems: A*): Unit = {}
这不是一个bug.它是一种设计选择,有利于在Scala中使用vararg与Java的互操作性.例如,它允许您将List
一个Scala varargs方法传递给它,而不必将其转换Array
为路径.
如果你需要使用Java中的Scala varargs,你应该创建一些scala Seq.例如,您可以编写Java包装器以获取自动创建的数组,然后使用genericWrapArray
该Predef
对象中的方法.
归档时间: |
|
查看次数: |
1111 次 |
最近记录: |