参数化类型和泛型类



我在将arraylist作为参数发送到泛型方法时遇到问题。知道我在这里做错了什么吗?

ArrayList<Integer> list50k = new ArrayList<>();
list50k.add(1);
list50k.add(5);
list50k.add(8);
list50k.add(7);
selectionSort(list50k); // error is in this line

然后,我尝试将数组发送到方法,并得到一个错误。方法是:

public static <T extends Comparable<T>> void selectionSort(T[] list){...}

问题是ArrayList<T>不是数组,这意味着它不能转换为T[]

如果要传递ArrayList,则方法签名可以是selectionSort(List<T>)

您也可以将ArrayList转换为T[],但这在java中的语法有点烦人,除非您真的需要一个数组,否则我不建议您这样做。

试试这个

selectionSort(list50k.toArray(new Integer[list50k.size()])); 

根据您的方法签名,从ArrayList<Integer>中获取Integer[]以使其成为有效参数。

最新更新