读书人

J2SE泛型一

发布时间: 2012-12-20 09:53:21 作者: rapoo

J2SE泛型1

?本篇文章是第7版Core Java2第13章的读书笔记。

?

所谓泛型从直观上看就是含有<T>这样的表示,T是包括自定义类在内的所有从Object继承的类(因此,int,double等基本数据类型不能使用泛型)。使用泛型典型的例子即是容器类,比如ArrayList<E>,Map<K,V>等。

?

以上可以被概括为下面三句话:

1,? 虚拟机中没有泛型,只有普通的类和方法。

2,? 所有的类型参数都用它们的边界替换。

3,? 为保持类型安全性,必要时会自动插入强制类型转换。

?

泛型的类型

我们考虑下面一段伪代码: Pair<String> stringPair=......; Pair<Employee> employeePair=......; if(stringPair.getClass()==employeePair.getClass())

?这条if语句的结果是什么呢?实际上,在类型比较的时候<T>会被忽略,可以看到的只是类Pair。因此,比较的结果是true。同样,if(stringPair instanceof Pair<T>)也是真。

我们需要注意的是,无论何时使用instanceof或者涉及泛型类型的强制类型转换表达式编译器都会产生一个警告。

?

泛型的限制

1,泛型不能应用于数组

2,泛型类型不能实例化,也就是说我们不能对泛型类型使用new表达式

3,在静态域和静态方法中也不能使用泛型

?

读书人网 >J2SE开发

热点推荐