我需要将集合发送到此方法:
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 :(得分:4)
您提到的方法是使用varargs,这意味着它接受单个Client
实例或Client
个对象数组。您应该将List
转换为这样的数组:
List<Client> clientsToUpdate = new ArrayList<Client>();
Client[] clients = clientsToUpdate.toArray(new Client[0]);
save(clients);
除非项目中有多个Client
类,否则这应该有效。
答案 1 :(得分:1)
T ..不是一个集合,它是一个数组。所以,你必须转换它。也许是这样的:
for(Object o: T)
myCollection.add(o);
编辑:
对不起,我想你想要不同的方式。如果要将Collection传递给方法,请将其转换为数组:Object[] array = myCollection.toArray();
答案 2 :(得分:1)
你不能将任何Collection传递给vararg方法(除非方法签名是(Collection ...),但这几乎肯定不是你想要的)。尝试使用Array。