A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于以下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());
}
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马