通用列表打印方法

man*_*nis 8 java generics list

我正在尝试编写一个通用的print方法,适用于实现"Iterable"接口的所有类

public class List<T> {

    public static <T extends Iterable<T>> void print(T[] list){
        for (Object element : list){
            System.out.println(element);
        }
    }
    public static void main(String[] args){
        ArrayList<Integer> l = new ArrayList();
        l.add(1);
        l.add(5);
        l.add(3);
        l.add(2);
        print(l);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误"List中的方法print(T [])不适用于参数(ArrayList)"

Sot*_*lis 7

你的参数是T[].这是一个扩展类型的数组Iterable.你只是想要T.但是你还需要一个类型参数的类型变量Iterable.你需要

public static <T extends Iterable<E>, E> void print(T list) {
Run Code Online (Sandbox Code Playgroud)

你需要这个,因为你不希望Iterable<ArrayList>它在你当前的实现中是什么.

  • 我认为`print(Iterable <?>)`也没关系,除非我读得太快. (7认同)