如何将ArrayList传递给将集合作为输入的方法

时间:2010-05-06 05:13:30

标签: java arraylist collections interface-implementation

我想将一些ArrayList<Integer> X传递给以a(Collection<Integer> someCol)作为输入的方法Collection<Integer>

我该怎么做?我认为ArrayList是一个集合,因此我应该能够“只做它”但似乎Collection是一个接口,而ArrayList实现了这个接口。我能做些什么来使这项工作......如果你理解这个理论对我和其他许多人都有帮助。

由于

2 个答案:

答案 0 :(得分:9)

做吧。

说真的,一个类会隐式地转换为它实现的接口。

编辑
如果您需要一个例子:

import java.util.*;

public class Sandbox {
    public static void main(String[] args) {
        final ArrayList<Integer> list = new ArrayList<Integer>(5);
        Collections.addAll(list, 1, 2, 3, 4, 5);
        printAll(list);
    }

    private static void printAll(Collection<Integer> collection) {
        for (Integer num : collection)
            System.out.println(num);
    }
}

答案 1 :(得分:4)

class ArrayList<E> implements List<E>interface List<E> extends Collection<E>,因此ArrayList<Integer>是-Collection<Integer>

这就是所谓的“子类型”。

但请注意,即使Integer extends NumberList<Integer>也不是List<Number>。但是,它是List<? extends Number>。也就是说,Java中的泛型是不变的;它不是协变的。

另一方面,

阵列是协变的。 Integer[]是一个Number[]

参考

相关问题