java - 数组无法分配给通用引用

标签 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]; 处给出错误,指出类型不匹配:无法从 Test.Clazz[] 转换为 C[]。为什么会出现这个错误?如何解决这个问题?

最佳答案

因为例如,如果 C 绑定(bind)到 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/

相关文章:

java - 用正则表达式解析 HTML?

Java 泛型 - 覆盖返回 set<T> 的函数

java - 如何将类型传递给 java 中的泛型类?

java - ServerSocket如何接收多个文件

java - 查找 UI 控件的类名

java - jxta:jxse是否提供nat tcp穿越解决方案?

java - 如何使用泛型变量?

java - 如何用java创建目录和子目录结构?

Java 泛型 ?扩展字符串

c# - 具有泛型参数和抽象类的泛型