【转载】Java泛型简明教程

时间:2021-12-09 19:26:09

======================================================
注:本文源代码点此下载
======================================================

导读:本文是从《java generics quick tutorial》这篇文章翻译而来,译文来自外刊it评论《java泛型简明教程》。内容如下:

泛型是java se 5.0中引入的一项特征,自从这项语言特征出现多年来,我相信,几乎所有的java程序员不仅听说过,而且使用过它。关于java泛型的教程,免费的,不免费的,有很多。我遇到的最好的教材有:

the java tutorial

java generics and collections, by maurice naftalin and philip wadler

effective java中文版(第2版), by joshua bloch.

尽管有这么多丰富的资料,有时我感觉,有很多的程序员仍然不太明白java泛型的功用和意义。这就是为什么我想使用一种最简单的形式来总结一下程序员需要知道的关于java泛型的最基本的知识。

java泛型由来的动机

理解java泛型最简单的方法是把它看成一种便捷语法,能节省你某些java类型转换(casting)上的操作:

list【转载】Java泛型简明教程

在java中,类型t的子类型既可以是类型t的一个扩展,也可以是类型t的一个直接或非直接实现(如果t是一个接口的话)。因为“成为某类型的子类型”是一个具有传递性质的关系,如果类型a是b的一个子类型,b是c的子类型,那么a也是c的子类型。在上面的图中:

fujiapple(富士苹果)是apple的子类型

apple是fruit(水果)的子类型

fujiapple(富士苹果)是fruit(水果)的子类型

所有java类型都是object类型的子类型。

b类型的任何一个子类型a都可以被赋给一个类型b的声明:

apple a = ...;

fruit f = a;

泛型类型的子类型

如果一个apple对象的实例可以被赋给一个fruit对象的声明,就像上面看到的,那么,listjava generics and collections》这本书中所说的存取原则,以及joshua bloch在他的《effective java》这本书中所说的pecs法则。

bloch提醒说,这pecs是指”producer extends, consumer super”,这个更容易记忆和运用。

译文出自:外刊it评论

注:本文转载自http://sd.csdn.net/a/20110603/299216.html,有删改。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/