类型擦除
编译器在程序编译字节码的时候会把泛型信息抹除掉,所以在运行期间是不带泛型信息的,ArrayList< Integer>和ArrayList< String >运行时都变成ArrayList了。
首先观察一段代码
这篇文章无聊的问题来自于以下一段无聊的代码
String g="ss";
List adheros=new ArrayList();
adheros.add(2);
adheros.add(new String("dsa"));
adheros.add(g);
adheros.add(new ADHero("hero 1"));
ArrayList<? extends Hero> nheros=(ArrayList<? extends Hero>) adheros;//引用传递过去
//Java实际上是不允许这么干的,违背使用泛型的初衷
/*强制类型转换的原因是无法将List类型的转换为Array List的
*/
System.out.println