原始类型可引用一个参数化类型的对象,编译报告警告
这个警告: ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized
这个警告的意思是右边是参数化的类型ArrayList,而左边是未参数化的
如果非要是: ArrayList a=new ArrayList<String>();
那么高级for里编译会提示: Type mismatch: cannot convert from element type Object to String的错误
而Java在把类文件编译完成.class后是去泛型的,也称为泛型的擦除
而在运行时,他又会重新给它加回泛型,但是在左边由于没有指定类型,那么编译器就会把它当作存储的是Object的类型,而存储Object元素的集合a是不能直接赋值给String 的s的!
注: 这仅是本人学习的观点,可能并不准确,仅供参考! |