1.不能用类型参数代替基本类型
例如,没有Pair<double>,只有Pair<Double>,其原因是类型擦除。擦除之后,Pair类含有Object类型的域,而Object不能存储double值。这体现了Java语言中基本类型的独立状态。
2.throws或catch泛型类的实例(有关异常)
在Java中,不能对泛型类的异常对象进行抛出捕获。实际上,泛型类继承于Throwable类都是不合法的
3.泛型类的静态上下文中类型变量无效
4类的静态域和静态方法是属于类而不属于对象
5运行时类型检查只适用于原始类型
们知道可以使用instanceof关键字来判断一个引用是否是一个类的对象。在泛型里面,这种代码是不支持的:
6不允许创建泛型类型的数组。
需要说明的是,只是不允许创建泛型类型的数组,而生命类型为Pair<String>[]的变量仍是合法的,只是不允许使用new Pair<String>[10]这种方式来初始化变量。
注意:可以声明通配类型的数组,然后进行强制类型转换:Pair<String> pairs = (Pair<String>[]) new Pair<?>[10]