2015-10-06 111 views
0

我使用了此簽名的java方法handle(Param... params)。我如何將一個Scala列表轉換爲這樣的序列?將scala列表轉換爲<repeated...>

當我試着使用數組,我得到以下錯誤:

[error] (x$1: <repeated...>[Param])Unit 
[error] cannot be applied to (Array[Param]) 

這是什麼?<repeated...>

回答

4
(x$1: <repeated...>[Param])Unit 

是可變參數的內部(編譯器)表示。在平原階此相對應的是這樣的:

(x$1: Param*) => Unit 

換句話說,你傳遞一個Array[Param]的方法期待的Param一個(可變參數)列表。 要解決此問題,請使用_*展開數組並將每個元素視爲不同的參數。換句話說關閉此:

handle(myArray) 

到這一點:

handle(myArray:_*) 

見階規範,4.6.3 Repeated Parameters

+0

我不能改變方法的簽名,這是從我使用的是API: ( – bachr

+0

我不是說你必須改變方法簽名,你只需要改變你的方式。 –

+0

啊,我明白了,謝謝。 – bachr

相關問題