参数化类型和通用类

时间:2014-04-22 17:37:15

标签: java generics arraylist

我无法将我的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){...}

2 个答案:

答案 0 :(得分:2)

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

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

你也可以将ArrayList转换为T[],但是java的语法有点恼人,除非你真的需要一个数组,否则我不推荐。

答案 1 :(得分:0)

试试这个

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

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