本帖最后由 Clare0621 于 2014-1-4 21:02 编辑
在张老师视频中看到关于通过反射绕过集合的泛型机制问题:
视频中,张老师定义了一个Integer类型的ArrayList,然后通过反射想集合中添加了一个字符串,并成功输出到控制台。
我自己定义了一个String类型的ArrayList,然后通过反射向其中添加了一个Integer元素,打印时就出现了类型转换异常,编译没问题。代码如下:- public class GenericTest {
- public static void main(String[] args) throws Exception {
- //通过反射可绕过泛型机制
- ArrayList<String> collection = new ArrayList<String>();
- collection.add("abc");
- collection.getClass().getMethod("add", Object.class).invoke(collection, 4);
- System.out.println(collection.get(1));
- }
复制代码
谁能解释下什么原因?
|