首页 > 解决方案 > 为什么在外部参数化类中创建一个组件类型为内部类的数组被视为“通用数组创建”?

问题描述

public class A<T> {
    B[] bs = new B[5];

    private class B {

    }
}

我收到一个编译时错误,说new B[5]是通用数组创建。我没想到这是因为:

  1. B 本身没有参数化。
  2. B 不是 A 的类型参数。

考虑到这些原因,为什么new B[5]仍然认为是泛型数组创建?

标签: javaarraysgenerics

解决方案


因为创建一个实例B(因为它是一个内部类)的唯一方法是使用一个参数化的实例A。简单的修复,改变

private class B

private static class B

推荐阅读