gpt4 book ai didi

扩展可比较的 Java 泛型类不能转换为 java.base/[Ljava.lang.Comparable

转载 作者:行者123 更新时间:2023-12-02 02:04:15 26 4
gpt4 key购买 nike

我正在尝试将 Object[] 数组转换为通用排序我已经实现了这部分代码

public class SortedArraySet<T extends Comparable<T>> implements Set<T>, Comparator<T> {

T[] arr;
int size = 5, index = 0;

@SuppressWarnings("unchecked")
SortedArraySet() {
arr = (T[]) new Object[5];
System.out.println("New set was initiated");
}

@Override
public int compare(T a, T b) {

if (a.compareTo(b) > 0)
return 1;
else

return 0;
}

每当我运行它时,我都会收到以下编译错误

Exception in thread "main" java.lang.ClassCastException: java.base/[Ljava.lang.Object; cannot be cast to java.base/[Ljava.lang.Comparable; at q3.SortedArraySet.(SortedArraySet.java:12) at q3.q3main.main(q3main.java:6)

第6行的说明如下

SortedArraySet<Integer> sa = new SortedArraySet<Integer>();

在我添加extends Comparable(以及compareTo)以对集合进行排序之前,代码可以正常工作

是否可以使用 Collections.sort?我已经尝试过,但它似乎不适用于这样的数组!

最佳答案

您需要使用:

arr = (T[]) new Comparable[5];

而不是

arr = (T[]) new Object[5];

在类型删除后,T[] arr将是Comparable[] arr。所以

T[] arr = (T[]) new Object[5]; 

将成为

Comparable[] arr = (Comparable[]) new Object[5];

显然,它会抛出java.lang.ClassCastException

关于扩展可比较的 Java 泛型类不能转换为 java.base/[Ljava.lang.Comparable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51047001/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com