Java中的接口数组

我有一个界面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类.

此外,正如下面的注释中所指出的,您将无法在此方法中向列表中添加对象.

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写:&#160;一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...