Java泛型转换

class Father{}
class Son extends Father{}
public static void main(String args[]){
    ArrayList a = 
        (ArrayList)new ArrayList();
}

这种写法是错的,说明左右两者不存在类层级的上下关系。

public static void main(String args[]){
    ArrayList a= 
        new ArrayList();

    @SuppressWarnings("unchecked")
    ArrayList b = (ArrayList)a;
}

这种格式就可以,不过会有runtime error的风险,要加上@SuppresWarnings (“unchecked”)来防止编译器警告,为什么呢?明明做的是把ArrayList< Son> 转化到ArrayList< Father>,应该没问题呀?此处不是很懂

你可能感兴趣的:(java)