Java中的接口数组
发布时间:2020-12-15 00:27:33 所属栏目:Java 来源:网络整理
导读:我有一个界面A: interface A {} 然后我有一个B级: class B implements A {} 然后我有一个使用A列表的方法: void process(ArrayListA myList) {} 我想传递一个B列表: ArrayListB items = new ArrayListB();items.add(new B());process(items); 但是有一个
我有一个界面A:
interface A { } 然后我有一个B级: class B implements A { } 然后我有一个使用A列表的方法: void process(ArrayList<A> myList) { } 我想传递一个B列表: ArrayList<B> items = new ArrayList<B>(); items.add(new B()); process(items); 但是有一个类型不匹配的错误.我理解为什么. ArrayList本身就是一个类型,它没有从ArrayList< B>转换的功能.到ArrayList< A>.是否有一种快速且资源方面的方式来形成一个适合传递给我的过程方法的新数组? 解决方法
我认为最简单的解决方案是将其中一种方法更改为:
void process(ArrayList<? extends A> myList) { } 但是,请注意,使用此解决方案时,整个列表必须属于同一类型.也就是说,如果你有一个也会实现A的C类,你就不能混合数组中的项目,使其部分属于B类,部分属于C类. 此外,正如下面的注释中所指出的,您将无法在此方法中向列表中添加对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |