|
|
|
|
移动端

1.5.1 简单的泛型类和接口

《数据结构与算法分析:Java语言描述(原书第3版)》第1章引论,在这一章, 我们阐述本书的目的和目标并简要复习离散数学以及程序设计的一些概念。本节为大家介绍简单的泛型类和接口。

作者:冯舜玺/陈越 译来源:机械工业出版社|2016-04-13 10:49

1.5 利用Java 5泛型特性实现泛型构件

Java 5支持泛型类, 这些类很容易使用。然而, 编写泛型类却需要多做一些工作。本节将叙述编写泛型类和泛型方法的基础。我们不打算涉及语言的所有结构, 那样将是相当复杂的, 而且有时是很难处理的。我们将介绍用于全书的语法和习语。

1.5.1 简单的泛型类和接口

图1-9是前面图1-5描述的MemoryCell的泛型版代码。这里, 我们把名字改成了GenericMemoryCell, 因为两个类都不在包中, 所以名字也就不能相同。

当指定一个泛型类时, 类的声明则包含一个或多个类型参数, 这些参数被放在类名后面的一对尖括号内。第1行指出, Generic-MemoryCell有一个类型参数。在这个例子中, 对类型参数没有明显的限制, 所以用户可以创建像GenericMemoryCell<String>和GenericMemoryCell<Integer>这样的类型, 但是不能创建GenericMemoryCell<int>这样的类型。在GenericMemoryCell类声明内部, 我们可以声明泛型类型的域和使用泛型类型作为参数或返回类型的方法。例如在图1-9的第5行, 类GenericMemoryCell<String>的write方法需要一个String类型的参数。如果传递其他参数那将产生一个编译错误。

也可以声明接口是泛型的。例如, 在Java 5以前, Comparable接口不是泛型的, 而它的compareTo方法需要一个Object作为参数。于是, 传递到compareTo方法的任何引用变量即使不是一个合理的类型也都会编译, 而只是在运行时报告ClassCastException错误。在Java 5中, Comparable接口, 它是泛型接口接口是泛型的, 如图1-10所示。例如, 现在String类实现Comparable<String>并有一个compare-To方法, 这个方法以一个String作为其参数。通过使类变成泛型类, 以前只有在运行时才能报告的许多错误如今变成了编译时的错误。


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Groovy入门经典

本书详细介绍脚本语言Groovy,首先介绍Groovy语言的基本特性,包括讨论Groovy方法、程序闭包、列表、映射以及对类和继承的支持,然后介绍如...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊