[英]Pass iterable as method argument?
我正在嘗試使用具有如下方法簽名的第三方庫:
testMethod(Iterable<HashMap<String,Date>>, String, String)
如何將可迭代方法傳遞給此方法?
我想做類似以下的事情,但是失敗了:
HashMap<String,Date> items = new HashMap<String, Date>();
items.put("item1", new Date());
items.put("item2", new Date());
testMethod(items, "more", "data");
您需要傳遞Iterable
或其子類型之一,例如List
, Set
等。因此,您可以將HashMap
添加到List
,然后傳遞它:
HashMap<String,Date> items = new HashMap<String, Date>();
items.put("item1", new Date());
items.put("item2", new Date());
List<HashMap<String, Date>> list = new ArrayList<HashMap<String, Date>>();
list.add(items);
testMethod(list, "more", "data");
請注意,由於參數類型為Iterable<HashMap<String, Date>>
,因此只能傳遞List<HashMap...>
或Set<HashMap...>
等,而不能傳遞List<Map..>
在里面。
您需要使用一些可迭代的對象包裝Map。 使用Arrays.asList(T... a)
應該可以在這里工作。
HashMap<String,Date> items = new HashMap<String, Date>();
items.put("item1", new Date());
items.put("item2", new Date());
testMethod(Arrays.asList(list), "more", "data");`
您需要將Iterable傳遞給該方法。 看來HashMap沒有實現Iterable接口。 您可以對Map進行子類化,然后將Iterable接口添加到您的子類中,也可以傳入地圖項的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.