class Father{}
class Son extends Father{}
public static void main(String args[]){
ArrayList<Father> a =
(ArrayList<Father>)new ArrayList<Son>();
}
这种写法是错的,说明左右两者不存在类层级的上下关系。
public static void main(String args[]){
ArrayList<? extends Father> a=
new ArrayList<Son>();
@SuppressWarnings("unchecked")
ArrayList<Father> b = (ArrayList<Father>)a;
}
这种格式就可以,不过会有runtime error的风险,要加上@SuppresWarnings (“unchecked”)来防止编译器警告,为什么呢?明明做的是把ArrayList< Son> 转化到ArrayList< Father>,应该没问题呀?此处不是很懂