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

7qhs6swi  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(318)

这个问题在这里已经有答案了

如何在java中创建泛型数组((31个答案)
上个月关门了。
当我在测试中询问长度时,我得到了一个整数转换错误,我尝试了其他类,比如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); 
    }
}

这就是我要检查的类

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];
    }
}
0yycz8jy

0yycz8jy1#

这里有几个问题:
你不能启动 Comparable .
你的 T 类扩展 Comparable 反之亦然。
要解决此问题,您可以使用:

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

相关问题