中所周知,Java中的泛型并不像C++、C#一样是真正的泛型,其泛型是通过类型擦除来实现的。具体什么是类型擦除,可以参看这篇博文:http://icyfenix.iteye.com/blog/1021949。今天要记录的是在实际开发中遇到的一个,由于Java这种泛型的实现方式而导致的问题,及解决办法。

 

一下代码是模拟真实开发环境下的实现:

万码学堂,电脑培训,计算机培训,Java培训,JavaEE开发培训,青岛软件培训,软件工程师培训

 1   @Test 2   public void test(){ 3     // 构建searchMap,模拟前端传来的查询参数 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 &