当前位置:文档之家› Java编程基础第十章02泛型

Java编程基础第十章02泛型

• •
CollectionsTest.java
3 Sept. 2008 Confidential
ቤተ መጻሕፍቲ ባይዱ
泛型的定义
泛型经常被称为参数化类型,它能够像方法一样接受不同 类型的参数。 • 定义方式为<>

ArrayList<E> ArrayList<E>
– E是类型变量 •
myArrayList ; myArrayList ;
x1) { x1) {
y1) { y1) {
Point<Integer> point1 = new Point<Integer>(4, 2);
3 Sept. 2008 Confidential
练习
• •
1、自己定义一个泛型,参考前两页的代码; 2、在自定义的泛型中试验get和set方法;

把上页的示例实现测试一下: Point.java

GenericsTest.java
3 Sept. 2008 Confidential
泛型作为变量类型使用

泛型会产生出一个新的数据类型,那么这个新的数据类型就 可以作为类型参数来使用,创建出一个新的泛型。
GenericVarTest.java import java.util.*; import java.util.*; class GenericVarTest { class GenericVarTest { public static void main(String[] args) { public static void main(String[] args) { ArrayList<String> str = new ArrayList<String> str = new ArrayList<String>(); ArrayList<String>(); str.add("aaaa"); str.add("aaaa"); str.add("bbbb"); str.add("bbbb"); ArrayList<String> str1 = new ArrayList<String> str1 = new ArrayList<String>(); ArrayList<String>(); str1.add("cccc"); str1.add("cccc"); str1.add("dddd"); str1.add("dddd");
3 Sept. 2008 Confidential
泛型中的通配符
泛型中可以使用“?”通配符作为参数,表示该泛型可以接收 任意类型的数据。 • 上界通配符:泛型中只允许一个类自身(接口)或者其子类 (实现该接口的类)作为参数传入。 – 表示方式为:泛型类型<? extends 父类(接口)> • 下界通配符:表示泛型中只允许一个类自身或者该类的父 类作为参数传入。(很少使用) – 表示方式为:泛型类型<? super 子类>。
Copyright © 2008 版权所有 东软集团
Java编程基础 ——泛型
东软IT人才实训中心
Copyright 2008 By Neusoft Group. All rights reserved
第十章 泛型
目标:
学时:0.5学时 教学方法:讲授ppt +上机练习
3 Sept. 2008 Confidential
本章要点
• • • • •
泛型的出现 泛型的定义 泛型作为变量类型使用 泛型中的通配符 创建自己的泛型
3 Sept. 2008 Confidential
泛型的出现
JDK1.4中集合在使用上的问题 – 集合中的add( )方法接受的是一个Object对象的参 数,在获取集合中的对象时,必须进行造型操作。 – 造型操作可能出现问题,一般在程序运行时才能发生, 发现问题比较困难。 • 解决之道(泛型) – 在对象放入集合前,为集合作个限制 – 在获取集合中的对象时,不用进行造型的操作 – 当有不同类型的对象添加到集合中的时候,编译时就能 检查出错误。
3 Sept. 2008 Confidential
public E getY() { public E getY() { return y; return y; } } public void setX(E public void setX(E x = x1; x = x1; } } public void setY(E public void setY(E y = y1; y = y1; } }
注意: – 无论泛型的表示形式是否相同,泛型实际上是产生了一 个新的数据类型。不同新数据类型之间不存在继承的关 系。 GenericsExample.java

3 Sept. 2008 Confidential
练习

参考示例GenericsExample.java,完成下面练 习: – 创建一个只能容纳Student类型对象的集合 – 然后向集合里面增加两个Student对象,再增 加一个String类型的对象 – 最后使用Iterator遍历输出集合的对象;

WildCardTest.java、BoundedWildcardTest.java
3 Sept. 2008 Confidential
创建自己的泛型

创建泛型和定义一个类一样,只要类型变量位于类后面的 <>中就可以。
class Point<E> { class Point<E> { E x; E x; E y; E y; public Point(E x1, E y1) { public Point(E x1, E y1) { x = x1; x = x1; y = y1; y = y1; } } public E getX() { public E getX() { return x; } return x; }
3 Sept. 2008 Confidential
程序示例(续)
ArrayList<ArrayList<String>> ArrayList<ArrayList<String>> listofStr= listofStr=
new ArrayList<ArrayList<String>>(); new ArrayList<ArrayList<String>>(); //泛型作为参数产生一个新的泛型类 //泛型作为参数产生一个新的泛型类 listofStr.add(str); listofStr.add(str); listofStr.add(str1); listofStr.add(str1); String s = listofStr.get(0).get(0); String s = listofStr.get(0).get(0); System.out.println(s); // prints"bbbb“ System.out.println(s); // prints"bbbb“ String s1 = listofStr.get(1).get(0); String s1 = listofStr.get(1).get(0); System.out.println(s1); //prints"cccc" System.out.println(s1); //prints"cccc" } } } }
3 Sept. 2008 Confidential
本章小结
• • • •
掌握泛型的特点 泛型可以作为变量类型来使用 掌握泛型中的通配符 学会创建自己的泛型
3 Sept. 2008 Confidential
术语
缩语、术语 英文全称 解 释
3 Sept. 2008 Confidential
3 Sept. 2008 Confidential
相关主题