爲什麼所有使用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的代碼 –