小编Sim*_*ell的帖子

将T [](其中T是Byte [])返回到Byte []

我有一个Java JUnit 4测试和一个创建通用数组的泛型类.当我创建一个返回此通用数组的方法时,我会在返回它时收到错误消息.如果我将ArrayList(其中T是通过类实例化的Byte)返回到ArrayList,它就可以工作.

为什么数组似乎被实例化和可用(在更复杂的类上测试)但我不能返回对该数组的引用?

错误:

java.lang.ClassCastException: [Lcom.waikato.assignment.Object; cannot be cast to [Ljava.lang.Byte;
at com.waikato.testing.TestJava.test(TestJava.java:20)
Run Code Online (Sandbox Code Playgroud)

类:

public class TestClass<T> {
    T[] array;

    @SuppressWarnings("unchecked")
    public TestClass() {
        array = (T[]) new Object[32];
    }

    public T[] getArray() {
        return array;
    }

    public boolean doThing() {
        T[] t = array;

        return t == array && t != null;
    }
}
Run Code Online (Sandbox Code Playgroud)

测试:

public class TestJava {

    @Test
    public void test() {
        TestClass<Byte> t = new TestClass<Byte>();
        Byte[] b = t.getArray(); // Crash caused

        assertTrue(t.doThing()); // …
Run Code Online (Sandbox Code Playgroud)

java arrays generics java-6

3
推荐指数
1
解决办法
270
查看次数

标签 统计

arrays ×1

generics ×1

java ×1

java-6 ×1