为什么所有使用java的scala可变参数方法似乎都接受变量的Seq,并且不能用作java本地可变参数方法。这是一个错误?例如,Buffer
具有方法def append(elems: A*): Unit
。但在Java中它有另一个签名:void append(Seq<A>)
。在java中使用scala可变参数的方法
9
A
回答
7
这是不是一个错误。这是一个设计选择,有利于在Scala中与Java的互操作性中使用可变参数。例如,它允许您将List
转换为Scala可变参数方法,而无需在途中将其转换为Array
。
如果您需要使用Java的Scala可变参数,您应该创建一些scala Seq。例如,您可以编写一个Java包装来获取自动创建的数组,然后使用Predef
对象中的genericWrapArray
方法。
-5
14
如果您控制scala代码,您可以使用@varargs使它生成一个java兼容的varags方法,例如, @varargs def append(elems: A*): Unit = {}
相关问题
- 1. 如何用Scala的AnyVal调用Java可变参数方法?
- 2. 如何覆盖Scala中的Java可变参数方法?
- 3. 如何在Scala中使用可变参数方法实现Java接口?
- 4. 无法在scala中调用可变参数方法
- 5. 如何从Scala调用Java重载可变参数方法?
- 6. 转化Scala的可变参数为Java对象...可变参数
- 7. 如何将Scala数组传递给Scala可变参数方法?
- 8. 如何从Java代码中使用Scala可变参数
- 9. 做什么:_ *在从Scala调用Java可变参数方法时做什么?
- 10. 使用可变数量的参数简化Java方法
- 11. 使用可变参数的Java反射调用方法
- 12. 如何在udf中使用scala/spark使用可变参数_ *?
- 13. 用单个null参数调用Java可变参数方法?
- 14. Scala的参数化方法使用参数通用类无法
- 15. 如何在java中使用反射调用带有可变参数的方法?
- 16. 在Scala类中实现可变方法
- 17. 使用方法,该方法采取可变数量的参数
- 18. 在Scala中使用可变长度索引的“更新”方法
- 19. 在不可变的SCOPT(Scala)OptionParser(2.0.1)中使用“help”方法
- 20. 在XSLT中使用变量参数调用Java方法
- 21. Java 7中的简体可变参数方法调用
- 22. 在Java中重载方法的可变参数
- 23. 将可变参数数据类型传递给scala方法
- 24. 如何声明Scala的方法,以便能够从Java中使用的可变参数风格
- 25. 方法中的java可选参数
- 26. 是否可以在scala中获取方法的参数名称
- 27. 何时适合在Objective-C方法中使用可变参数?
- 28. 在scala中使用参数和方法枚举
- 29. 是否可以调用一个在Java方法中作为参数传递的scala方法?
- 30. 我们可以使用方法参数的泛型在Java
那么,是的,这是有效的,但是是错误的)) – F0RR
这是因为使用Java是错误的第一位;) –
欲了解更多详细信息,请参阅http://stackoverflow.com/questions/10060377/how-to-use -scala-可变参数从 - Java的代码 –