ClassCastException将Collection转换为数组时

时间:2018-04-15 10:52:11

标签: java arrays generics collections

对于我的项目,我试图将给定的Collection转换为数组

我目前有这个:

public class InsertionSorter< T extends Comparable<T>> {
    private T[] array;

    @SuppressWarnings("unchecked")
    public InsertionSorter(){
        array = (T[]) new Object[0];
    }
}

这给了我以下错误:

java.lang.ClassCastException: java.base/[Ljava.lang.Object; cannot be cast to java.base/[Ljava.lang.Comparable;

有解决方法吗?

在我将其转换为数组之后,我想对其进行排序并将其作为集合返回。我这样做如下:

collection.clear();
collection.addAll(Arrays.asList(sort(array)));
return collection;

sort方法是一种对数组进行排序并返回类型为T的数组的方法。

1 个答案:

答案 0 :(得分:0)

您的typedefinition T声称实例至少为Comparable,但之后您尝试分配Object的数组,其中不是 {{ 1}},从而产生Comparable