Java中的接口数组

前端之家收集整理的这篇文章主要介绍了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类.

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

猜你在找的Java相关文章