泛型的擦除问题
部分源代码:
ArrayList<String> al = new ArrayList<String>();
al.add("nihao");
String str = al.get(0);
经过反编译
ArrayList al = new ArrayList();
al.add("nihao");
String str = (String)al.get(0);
可以看出编译器编译时会检查泛型指定的类型是否正确,然后会泛型擦除,编译器在使用集合元素的地方,默认又增加了强制类型转换。但往里添加"nihao"字符串,是默认转换成了Object类型?还是String类型? 如果是String类型,为什么还要加入强转