我试图创建一个优先级队列的任务在Java中,但我已经遇到了优先级队列的构造函数中的类转换异常。这是我的任务等级:Java类投射例外泛型
public class Task <E,T extends Integer>
{
private E job;
private T priority;
public Task(E job, T priority)
{
this.job = job;
this.priority = priority;
}
public String toString()
{
return "Job Name: "+ job + " Priority: "+priority;
}
}
错误被扔在优先级队列的构造函数的第二行:
public class PriorityQueueCustom <E,T extends Integer>
{
private Task<E,T>[] heap;
private int heapSize,capacity;
public PriorityQueueCustom(int capacity)
{
this.capacity = capacity + 1;
heap = (Task<E,T>[]) new Object[capacity];
heapSize = 0;
}
我不明白的是为什么我不能对象转换为任务自任务应自动扩展对象,但我是新来的泛型,所以我不知道如果我已经正确地设置它们?
这是我创建的优先级队列:
PriorityQueueCustom<String,Integer> queue = new PriorityQueueCustom<String,Integer>(10);
这里是生成的异常:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LPriorityQueueCustom$Task;
at PriorityQueueCustom.<init>(PriorityQueueCustom.java:28)
at PriorityQueueTester.main(PriorityQueueTester.java:5)
您是铸造Object'的'数组的'数组Task'。由于Object []不是Task []'的实例,因此无法完成此操作。为什么不首先创建一个“任务”数组? – johnnyaug
你能分享你得到的异常吗? – Mureinik
另请参阅http://stackoverflow.com/questions/529085/how-to-create-a-generic-array-in-java – 2016-08-14 16:52:49