“main”java.lang.classcastexception:[ljava.lang.Compariable;不能强制转换为[lnode;

kzipqqlq  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(271)

我试图创建一个像bellow这样的泛型类

public class MyMinHeap<T extends Comparable<T>>
{
    // To store array of elements in heap
    public T[] heapArray;

    // max size of the heap
    public int capacity;

    // Constructor
    @SuppressWarnings("unchecked")
    public MyMinHeap(int n)
    {
        capacity = n;
        heapArray = (T[]) new Comparable[capacity];
        current_heap_size = 0;
    }
MyMinHeap<Node> minHeap = new MyMinHeap<Node>(amount);

在尝试访问时填充minheap.heaparray之后 minHeap.heapArray[0] 获取错误 Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Comparable; cannot be cast to [LNode; at HalloJavaApp.main(HalloJavaApp.java:111)

uubf1zoe

uubf1zoe1#

这是因为 Comparable[] 不能强制转换为类型的数组 T[] ,如果 T 是一个合适的 Comparable . 这个 @SuppressWarnings("unchecked") 正在压制那个警告。
可以声明类型为 Comparable<T> 在需要的地方浇铸。

相关问题