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 次 |
| 最近记录: |