数组与泛型(2)

首先看一个简单的代码

class Demo
{
      class A{}
      public Demo(){
          A[] as=new A[10];
      }
}

创建一个内部类的数组,编译通过。

但当定义Demo时声明一个泛型,编译失败

package example;

 
class Demo<T>
{
      class A{}
      public Demo(){
         // A[] as=new A[10];  无法创建 Demo<T>.A 的通用数组
      }
}

这个错误让人困扰,并未创建所谓泛型数组,为何会编译失败。

究其原因,是因为内部类可以直接使用外部类的T类型参数,可能产生泛型数组。

package example;

 
class Demo<T>
{
      class A{
          T foo;
      }
      public Demo(){
         //A[] as=new A[10];  无法创建 Demo<T>.A 的通用数组
      }
}

这样就可能产生泛型数组了,违反了java原则。

原文地址:https://www.cnblogs.com/xurui1995/p/5343209.html