我试图创建一个像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)
1条答案
按热度按时间uubf1zoe1#
这是因为
Comparable[]
不能强制转换为类型的数组T[]
,如果T
是一个合适的Comparable
. 这个@SuppressWarnings("unchecked")
正在压制那个警告。可以声明类型为
Comparable<T>
在需要的地方浇铸。