一:为什么要使用泛型程序设计
java se 5.0之前,java泛型程序设计是通过继承来实现的,像arraylist就是通过维护object引用的数组。但是这样会带来两个问题。一是:获取一个值时必须进行强制类型转换。二是:没有错误检查,什么类型的值都能添加到数组列表中。
因而,泛型就提供了“类型参数”来指定元素的类型:
ArrayList<String> files=new ArrayList<String>();
这样不仅使代码具有更好的可读性,同时:编译器也可以很好的利用这个信息,读取时避免强制类型转化。插入时避免了错误类型的检查。
二:泛型类的设计
泛型类就是拥有一个或多个类型变量的类。
例如:public class Pair<T>{}或public class Pair<T,U>{}
使用时直接用具体的类型替换类型变量就可以实例化类型了。
例如:Pair<String>
三:泛型方法
泛型方法是在定义方法时,在修饰符的后面,返回类型的前面添加类型变量。
例如:pubic static <T>T getMiddle(T[]a)
类型方法可以定义在普通类和泛型类中。
调用时在方法名前的"<>"中放入具体的类型(也可以省略由编译器识别具体类型)。
四:类型变量的限定
类型变量的限定就是限定类型变量实现了什么接口以具体的实现具体的操作要求,例如,要实现两类型的字典比较,则类型变量必须实现了接口comparable接口。
实现方式:<T extends Comparable>
可以实现多个限定,用&分隔:<T extends Comparable&Serializable>
五:泛型代码和虚拟机
对于虚拟机来说没有泛型类型对象,所有的对象都是普通类,此时,对于所有的泛型类型,都自动的提供一个相应的原始类型,即搽除类型变量,并替换为限定类型(无限定类型的时候换成object)。
在有多个限定类型时,替换成第一个限定类型。
由于搽除,在翻译泛型表达式和泛型方法时编译器将插入强制类型装换。
分享到:
相关推荐
### 清华大学C++进阶讲义:第10章 泛型程序设计与C++标准模板库 #### 泛型程序设计的基本概念 在计算机科学领域中,泛型程序设计是一种允许开发者编写能够处理多种数据类型的代码的技术。这种编程方式的核心在于...
### 泛型程序设计与STL:理解与应用 #### 泛型程序设计:概念与优势 泛型程序设计(Generic Programming)是一种编程范式,它允许程序员编写能够处理多种数据类型的代码,而无需为每种类型重复编写相同的逻辑。...
泛型程序设计是一种高级的编程范式,它允许程序员创建可重用的代码模板,这些模板可以在多种数据类型上工作,而无需重复编写针对每种特定类型的具体实现。这种抽象方式提高了代码的灵活性和可维护性,是现代编程语言...
面向对象程序设计与泛型程序设计是软件开发中的两种核心程序设计范式,它们在设计方法、概念、以及应用范围等方面都有所不同,但都旨在提高程序的可重用性、灵活性和可维护性。下面将详细解析这两种设计方法的知识点...
主要内容包括程序设计基础知识、类与对象的基本概念、继承与多态、输入输出流,以及泛型程序设计。此外,本教材还介绍了一些常用数据结构基础知识,使得读者学习本书后,能够解决一些简单的实际问题。整套教材语言...
**第十三章 泛型程序设计** 泛型是Java编程语言中的一个重要特性,引入于Java 5.0,它允许在定义类、接口和方法时使用类型参数,从而提高了代码的类型安全性和重用性。泛型的主要目标是提供一种方式来限制容器对象...
泛型程序设计是继面向对象程序设计之后的又一种程序设计方法。 泛型程序设计就是让程序写得通用,能够适用于各种数据类型与数据结构,并且并不损失程序效率。面向对象与泛型程序设计这两种程序设计方法并不矛盾,...
本实验报告重点关注C++ STL和Java泛型程序设计两部分内容。 #### 二、C++ STL简介 C++ Standard Template Library(STL)是C++标准库的一部分,提供了一系列模板类或函数,用于处理常用的数据结构和算法问题。它...
泛型程序设计.md
Generic Programming(泛型程序设计小手册)中文chm版
Java中的集合类与泛型程序设计是Java开发中不可或缺的一部分,它们为开发者提供了处理和组织对象的高效工具。本章主要介绍了以下几个核心概念: 8.1 集合类结构: Java集合框架由两个主要的接口树组成。第一个树以...
第7章 泛型程序设计与数据结构.ppt
泛型程序设计与C标准模板库PPT学习教案.pptx
泛型程序设计是C++中的一种重要特性,它允许开发者编写可以处理多种数据类型的代码,提高了代码的重用性和灵活性。在实验八“泛型程序设计复习过程”中,主要涉及了以下几个知识点: 1. **链表类的定义与实现**: ...
本实验主要关注的是泛型程序设计,特别是使用C++中的链表、栈、队列以及STL(Standard Template Library)中的双向队列类(deque)。以下是实验中涉及的关键知识点: 1. **链表类**: 链表是一种数据结构,其中的...
Java的泛型是在JDK 1.5引入的,它的设计目标是提供类型安全的集合框架。Java泛型允许在类、接口和方法声明中使用类型参数,限制了插入和检索的元素类型。在Java中,泛型的使用可以防止在运行时出现...
要求: 在原有学生管理系统中,针对读文件、...编写一个表示某门课程成绩的泛型类 class CourseScore,属性包括课程的编号和成绩。 要求:成绩可以是百分制,也可以是A-E(分别以字符串和枚举类型两种手段表示A-E)。