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[]时显示错误。为什么会发生此错误?如何解决这个问题呢?

最佳答案

因为例如,如果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?

关于java - 数组无法分配给通用引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28582984/

10-13 05:53