果然是java都没学好,今天写方法的时候想把方法参数写成List<父类>,然后传子类进去统一处理,结果发现报错。
丢人地百度了:
ArrayList<ChildClass>();包括泛型在内的整个作为类型是无法强转成ArrayList<FatherClass>
如果想这样使用 可以使用 extends 关键字来限制泛型参数的适用范围
List<T extends Collection> 表示泛型实际参数可以是所有实现了 Collection接口的类,如list,set等。
所以这个就这样写
ArrayList<? extends FatherClass> object = new ArrayList<ChildClass>();
代表泛型参数可以是FatherClass或者其子类。
-----------------
参数写成List<? extends FatherClass>就可以了。