【发布时间】:2018-09-25 05:40:18
【问题描述】:
对于我的一个项目,我正在尝试将给定的 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类型数组的方法。
【问题讨论】:
-
你想达到什么目的?你明白 Object 与数组不同吗?为什么不用对象数组而不是 T?
-
本质上我想将 T 类型的集合转换为 T 类型的数组
-
在这种情况下使用对象数组... T 只是提供编译类型安全性而不是运行时...
-
@SMA,对象数组不行。您将无法在数组中的项目上调用
compareTo() -
抱歉,没有具体说明。将其更改为数组后,我想在对数组进行排序后再次将其作为集合返回。我会稍微修改一下帖子。
标签: java arrays generics collections