无法将数组分配给通用引用

时间:2015-02-18 11:52:18

标签: java generics

public class Test {

    class Genric<C extends Clazz> {
        C[] s;

        public Genric() {
            this.s = new SubClazz[3];
        }
    }

    class Clazz {

    }

    class SubClazz extends Clazz {

    }
}

代码在this.s = new SubClazz[3];Type mismatch: cannot convert from Test.Clazz[] to C[]时出错。为什么会出现此错误?如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

例如,如果C绑定到SomeOtherSubClazz,那么您将执行

SomeOtherSubClazz[] s = new SubClazz[3];

类似于:

Integer[] s = new Double[3];  // Integer and Double are both Numbers

这显然不是类型安全的。

如何解决这个问题显然取决于你想做什么。也许您可以按照此处建议的方法进行操作:How to create a generic array in Java?