我在将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[]
以使其成为有效参数。