泛型的局限性,泛型约束

1.不能用类型参数代替基本类型

例如,没有Pair,只有Pair,其原因是类型擦除。擦除之后,Pair类含有Object类型的域,而Object不能存储double值。这体现了Java语言中基本类型的独立状态。

2.throws或catch泛型类的实例(有关异常)

在Java中,不能对泛型类的异常对象进行抛出捕获。实际上,泛型类继承于Throwable类都是不合法的

3.泛型类的静态上下文中类型变量无效

4类的静态域和静态方法是属于类而不属于对象

5运行时类型检查只适用于原始类型

们知道可以使用instanceof关键字来判断一个引用是否是一个类的对象。在泛型里面,这种代码是不支持的:

 

6不允许创建泛型类型的数组。
    需要说明的是,只是不允许创建泛型类型的数组,而生命类型为Pair[]的变量仍是合法的,只是不允许使用new Pair[10]这种方式来初始化变量。
    注意:可以声明通配类型的数组,然后进行强制类型转换:Pair pairs = (Pair[]) new Pair[10]

你可能感兴趣的:(java)