在码代码的过程中,想用一下arraylist进行对char字符的存储,偶然发现不能这样使用。
参考文章:Java泛型05 : 泛型使用的8个限制_hanchao5272的博客-CSDN博客
泛型限制:
1.不能使用基本类型:boolean,char,float,double,byte,int,short,long
原因:因为泛型在编译时,会进行类型擦除,最后只保留原始类型。而原始类型只能是Object类及其子类,当然不能使用基本数据类型。
2.不允许进行实例化
3.不允许进行静态化
原因:静态变量在类中共享,而泛型类型是不确定的,因此编译器无法确定要使用的类型,所以不允许进行静态化。
备注:这里的静态化针对的对象是泛型变量,并不是泛型方法。
4.不允许直接进行类型转换(通配符可以)
5.不允许直接使用instanceof运算符进行运行时类型检查(通配符可以)
List<String> stringList = new ArrayList<String >();
//不能直接使用instanceof,类型检查报错
//LOGGER.info(stringList instanceof ArrayList<Double>);
6.不允许创建确切类型的泛型数组(通配符可以)
7.不允许定义泛型异常类或者catch异常(throws可以)