爲什麼所有使用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的可變參數爲Java對象...可變參數
- 5. 如何從Java代碼中使用Scala可變參數
- 6. 如何在udf中使用scala/spark使用可變參數_ *?
- 7. 用單個null參數調用Java可變參數方法?
- 8. Scala的參數化方法使用參數通用類無法
- 9. 您可以在Java中聲明用於Scala的無參數方法嗎?
- 10. 如何在java中使用反射調用帶有可變參數的方法?
- 11. 在不可變的SCOPT(Scala)OptionParser(2.0.1)中使用「help」方法
- 12. 將可變參數數據類型傳遞給scala方法
- 13. 如何聲明Scala的方法,以便能夠從Java中使用的可變參數風格
- 14. 方法中的java可選參數
- 15. 是否可以在scala中獲取方法的參數名稱
- 16. 我們可以使用方法參數的泛型在Java
- 17. Java的使用方法多次,但利用改變的參數
- 18. 在Scala中可以進行方法參數轉發嗎?
- 19. 使用Java中的可變長度方法重載方法
- 20. Java可變參數在變量名中使用
- 21. Scala DSL:使用無參數方法鏈接方法
- 22. Type中的方法不適用於可變參數方法升級到Java 1.8的參數
- 23. scala方法中變量參數的默認值
- 24. Java - 使用可變參數並返回數組列表的方法?
- 25. 調用可變參數方法
- 26. 速度調用可變參數方法
- 27. 如何創建接受可變數量參數的Java方法?
- 28. java中的方法參數
- 29. Scala可變參數函數和Seq
- 30. Scala - 函數作爲參數的方法
那麼,是的,這是有效的,但是是錯誤的)) – F0RR
這是因爲使用Java是錯誤的第一位;) –
欲瞭解更多詳細信息,請參閱http://stackoverflow.com/questions/10060377/how-to-use -scala-可變參數從 - Java的代碼 –