本帖最后由 黑马伍哲沂 于 2013-5-19 21:44 编辑
仔细看了下,还是不对。
我做了些实验,小结在代码注释中。- // 只要参数化泛型类型时,不是String。貌似就可以运行时添加和取出任意类型。
- ArrayList<Integer> collection1 = new ArrayList<Integer>();
- collection1.getClass().getMethod("add", Object.class).invoke(collection1,new Date());
- System.out.println(collection1.get(0));
- ArrayList<Date> collection3 = new ArrayList<Date>();
- collection3.getClass().getMethod("add", Object.class).invoke(collection3,"hello");
- collection3.getClass().getMethod("add", Object.class).invoke(collection3,17);
- System.out.println(collection3.get(0)+":"+collection3.get(1));
- // 当参数化泛型类型为String时,运行时能添加任意类型,但取出时出现类型转换异常
- ArrayList<String> collection2 = new ArrayList<String>();
- Object obj = collection2.getClass().getMethod("add", Object.class).invoke(collection2, 12);
- Object obj1 = collection2.getClass().getMethod("add", Object.class).invoke(collection2, new Date());
- // 返回两个true,说明都添加成功。
- System.out.println(obj+":"+obj1);
- // 是在取出的时候出问题。
- System.out.println(collection2.get(0)+":"+collection2.get(1));
复制代码 最终总结,求高手。 |