首先看一个简单的代码
class Demo{ class A{} public Demo(){ A[] as=new A[10]; }}
创建一个内部类的数组,编译通过。
但当定义Demo时声明一个泛型,编译失败
package example; class Demo{ class A{} public Demo(){ // A[] as=new A[10]; 无法创建 Demo .A 的通用数组 }}
这个错误让人困扰,并未创建所谓泛型数组,为何会编译失败。
究其原因,是因为内部类可以直接使用外部类的T类型参数,可能产生泛型数组。
package example; class Demo{ class A{ T foo; } public Demo(){ //A[] as=new A[10]; 无法创建 Demo .A 的通用数组 }}
这样就可能产生泛型数组了,违反了java原则。