我想構建一個地圖,它的值可以是類人,動物或字符串的列表,然後我在最後閱讀它。帶有通配符的java泛型地圖
我有以下問題:
Map<String,List<? extends Object>> someDataMap =
new LinkedHashMap<String,List<? extends Object>>();
Person p = new Person();
Animals a = new Animals();
List<Person> personList = p.getPersonList();
List<Animals> animalsList = a.getAnimalsList();
List<String> someStrings = new ArrayList<String>();
someStrings.add("Employe123");
someStrings.add("Pet-Cat");
// putting lists into map
someDataMap.put("person",personList);
someDataMap.put("animals",animalsList);
someDataMap.put("listsOfData",someStrings);
// now reading the values.
Map<String,List<? extends Object>> datMap =
(Map<String,List<? extends Object>>)model.get("datMap");
List<Person> dataList = (List<Person>) datMap.get("person");
List<Animals> nodalList = (List<Animals>)datMap.get("animals");
List<String> listsOfData = (List<String>) datMap.get("listsOfData");
- 是這種做法是正確的,我的意思是把這些價值觀和閱讀。
- 爲什麼不使用地圖不帶參數,爲什麼使用泛型和泛型使用通配符,我沒有讀到它,我還不清楚
我想嘗試沒有一個POJO這種方法。或者pojo是必要的。
請幫助,您的幫助將不勝感激。
感謝
感謝您的回答,我想獲得更多答案。我想看看如何有效地使用List <?使用不同的值擴展Object>以獲得地圖值。 – Nomad 2012-08-11 05:47:43
泛型'List's的一點是它們包含相同類型的元素,所以當你從它們中獲取()'值時,你不必投它們。如果你需要明確的話,你最好考慮一個更好的解決方案。有時候一個簡單的帶有三個列表的POJO可以節省很多頭痛,並且可以得到更簡潔的代碼。 – WhyNotHugo 2012-08-11 05:51:30