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)"
你的参数是T[].这是一个扩展类型的数组Iterable.你只是想要T.但是你还需要一个类型参数的类型变量Iterable.你需要
public static <T extends Iterable<E>, E> void print(T list) {
Run Code Online (Sandbox Code Playgroud)
你需要这个,因为你不希望Iterable<ArrayList>它在你当前的实现中是什么.