在java中,当我询问一个数组的长度时,我得到一个ClassCastException,我如何解决这个问题?

在java中,当我询问一个数组的长度时,我得到一个ClassCastException,我如何解决这个问题?,java,classcastexception,Java,Classcastexception,当我在测试中询问长度时,我得到了一个整数转换错误,我尝试了其他类,比如Character而不是integer,但我得到了相同的错误,java不允许我将Object或Comparable作为参数化类来编写 这是一个JUnit测试用例 public class EDBinaryHeapTest { @Test public void constructorTest01() { EDBinaryHeap<Integer> toCheck = new EDBi

当我在测试中询问长度时,我得到了一个整数转换错误,我尝试了其他类,比如Character而不是integer,但我得到了相同的错误,java不允许我将Object或Comparable作为参数化类来编写

这是一个JUnit测试用例

public class EDBinaryHeapTest {
    @Test
    public void constructorTest01() {
        EDBinaryHeap<Integer> toCheck = new EDBinaryHeap<Integer>(0);
        
        assertEquals(0, toCheck.numElementos);
        assertEquals(0, toCheck.elementos.length); 
    }
}
公共类EDBinaryHeapTest{
@试验
public void构造函数test01(){
EDBinaryHeap toCheck=新的EDBinaryHeap(0);
assertEquals(0,toCheck.numElementos);
assertEquals(0,检查元素长度);
}
}
这就是我创建用来检查的类

 public class EDBinaryHeap<T extends Comparable<T>> implements EDPriorityQueue<T>{
    protected T[] elementos;
    protected int numElementos;

    @SuppressWarnings("unchecked")
    public EDBinaryHeap(int numMaxElementos) {
        elementos = (T[]) new Comparable[numMaxElementos];
    }
}
公共类EDBinaryHeap实现EDPriorityQueue{
受保护的T[]元素;
受保护的国际货币基金组织;
@抑制警告(“未选中”)
公共EDBinaryHeap(int numMaxElementos){
元素=(T[])新的可比[numMaxElementos];
}
}
这里有几个问题:

  • 您无法启动
    可比较的
  • 您的
    T
    类扩展了
    compariable
    ,反之亦然
  • 要解决此问题,您可以使用:

        elementos = (T[])Array.newInstance(type, size);
    

    非常感谢@Michael,但是我只能更改JUnit测试用例,因为构造函数是由我的老师给出的。。。对不起,因为我没有解释。。。