黑马程序员技术交流社区
标题: (新人入学)一个关于ArrayList泛型擦除的疑问 [打印本页]
作者: Kudychen 时间: 2016-2-16 12:35
标题: (新人入学)一个关于ArrayList泛型擦除的疑问
关于以下ArrayList泛型擦除,在ArrayList<Integer>中add一个字符串"abc",我们知道泛型只在编译时有效,在运行时会被擦除掉,所以我们直接去拿ArrayList的字节码文件,通过反射来添加字符串,添加后可以打印出list,现在用Iterator<Integer>去遍历也是可以打印出字符串"abc"的,Iterator加泛型<Integer>是不考虑每个元素的数据类型吗?
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
public class Test1
{
public static void main(String[] args) throws Exception
{
ArrayList<Integer> list = new ArrayList<>();
list.add(111);
list.add(222);
Class clazz = Class.forName("java.util.ArrayList");
Method m = clazz.getMethod("add",Object.class);
m.invoke(list, "abc");
System.out.println(list);
Iterator<Integer> it = list.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |