最近学习到了Java中的泛型,对于静态方法,静态初始化块及静态变量的声明和初始化不能使用泛型的原因做了一个汇总:
1。因为泛型是要在对象创建的时候才知道是什么类型的,而对象创建的代码执行先后顺序是static的部分,然后才是构造函数等等。所以在对象初始化之前static的部分已经执行了,如果你在静态部分引用的泛型,那么毫无疑问虚拟机根本不知道是什么东西,因为这个时候类还没有初始化。因此在静态方法、数据域或初始化语句中,为了类而引用泛型类型参数是非法的
2.这个原理是这样的,静态方法中所能引用的属性必须是静态的,而引用参数是无法声明为静态的,因为静态的属性必须在声明时赴值或者实例化,泛型引用变量在声明的时候根本不知道是什么类型,自然不可能实例化,当然也不能放进静态方法了。