中所周知,Java中的泛型并不像C++、C#一樣是真正的泛型,其泛型是通過類型擦除來實現(xiàn)的。具體什么是類型擦除,可以參看這篇博文:http://icyfenix.iteye.com/blog/1021949。今天要記錄的是在實際開發(fā)中遇到的一個,由于Java這種泛型的實現(xiàn)方式而導(dǎo)致的問題,及解決辦法。

 

一下代碼是模擬真實開發(fā)環(huán)境下的實現(xiàn):

萬碼學(xué)堂,電腦培訓(xùn),計算機培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 1   @Test 2   public void test(){ 3     // 構(gòu)建searchMap,模擬前端傳來的查詢參數(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進行查詢,模擬后端的邏輯13     List<Long> goodsIds2 = (List<Long>)searchMap.get("goodsIds");14     for(Long goodsId : goodsIds2){15       System.out.println(goodsId);16     }17 &