2011-12-13 60 views
1

我需要發送收集到這個方法:Java方法檢索

public boolean[] save(T... entities) { 
    return _saveOrUpdateIsNew(entities); 
} 

,我試圖通過收集:

List<Client> clientsToUpdate = new ArrayList<Client>(); 
save(clientsToUpdate); 

但我得到一個編譯錯誤的方法類型是不適用爲List<Client>

編輯:

後,我加了一行:

clientsToUpdate.toArray(new Client[0]); 

我有這樣的編譯錯誤:

The method save(Client...) in the type BaseDAO<Client,Integer> is not applicable for the arguments (Client[]) 
+0

請向我們展示方法的確切簽名,確切的調用網站和確切的錯誤消息,而不是一些模糊的描述。謝謝。 – NPE

+0

我不知道該代碼是什麼。你能發佈一個完整的例子嗎? –

+0

你能否保持光標在編譯錯誤上並告訴我確切的錯誤? –

回答

4

您提到的方法使用可變參數,這意味着它接受單個Client實例或一組Client對象。您應該將List轉換成數組是這樣的:

List<Client> clientsToUpdate = new ArrayList<Client>(); 
Client[] clients = clientsToUpdate.toArray(new Client[0]); 
save(clients); 

這應該工作,除非你在你的項目中有多個Client類。

+1

我得到:在類型BaseDAO 中的方法save(Client ...)不適用於參數(Client []) – Dejell

+0

我看到你之前把我的答案和另外一個混合在一起......我的作品,除非你在你的項目中有多個'Client'類... – javanna

+0

你是對的!我很抱歉,我的工作空間中有多個客戶端類。 ! – Dejell

1

牛逼..不是集合,它是一個數組。所以,你必須轉換它。也許是這樣的:

for(Object o: T) 
    myCollection.add(o); 

編輯:

噢,對不起,我想你想的不同的方式。如果你想集合傳遞給你的方法,將其轉換爲一個數組:

Object[] array = myCollection.toArray(); 
+1

它不適用於我:( – Dejell

1

你不能傳遞任何收集到可變參數的方法(除非方法簽名(集...),但幾乎可以肯定不是你想要的)。嘗試使用數組。