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