ArrayList<? extends Object> al =new ArrayList<String>();//这样就没问题,因为我的左边能接收的是所有继承自Object的类,而不仅仅是Object类
复制代码
第四句和第三句一样.作者: 冯佩 时间: 2013-1-30 00:01
泛型是JDK1.5以后出现的新特性,之前的版本写法都是:ArrayList al = new ArrayList();JDK1.5以后就是:ArrayList<String> al = new ArrayList<String>();但是新版本要兼容老版本,所以写作ArrayList al = new ArrayList<String>()编译通过,但是不够严谨,所以会有警告。老版本比新版本先出现,所以不可能让老版本去兼容新版本,因此写作ArrayList<String> al = new ArrayList()会编译失败。至于ArrayList<String> al = new ArrayList<Object>()报错的原因是因为此处不是多态,而是泛型限定,String和Object是两个不同的类型。