中所周知,Java中的泛型并不像C++、C#一樣是真正的泛型,其泛型是通過(guò)類(lèi)型擦除來(lái)實(shí)現(xiàn)的。具體什么是類(lèi)型擦除,可以參看這篇博文:http://icyfenix.iteye.com/blog/1021949。今天要記錄的是在實(shí)際開(kāi)發(fā)中遇到的一個(gè),由于Java這種泛型的實(shí)現(xiàn)方式而導(dǎo)致的問(wèn)題,及解決辦法。
一下代碼是模擬真實(shí)開(kāi)發(fā)環(huán)境下的實(shí)現(xiàn):
1 @Test 2 public void test(){ 3 // 構(gòu)建searchMap,模擬前端傳來(lái)的查詢參數(shù) 4 Map<String, Object> searchMap = new HashMap<String, Object>(); 5 List<Integer> goodsIds1 = new ArrayList<Integer>(); 6 goodsIds1.add(1); 7 goodsIds1.add(2); 8 goodsIds1.add(3); 9 searchMap.put("goodsIds", goodsIds1);10 searchMap.put("goodsType", 1); 11 12 // 利用searchMap進(jìn)行查詢,模擬后端的邏輯13 List<Long> goodsIds2 = (List<Long>)searchMap.get("goodsIds");14 for(Long goodsId : goodsIds2){15 System.out.println(goodsId);16 }17 &