资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
2009年浙江工业大学软件学院Java程序设计视频教程Java程序设计视频教程本讲主题:泛型与枚举主要内容泛型类 枚举类型 for语句的简化写法泛型:看下面的例子,t是什么类型?public class Box private T t; private void set(T t) this.t = t; public T get() return t; 查看运行结果泛型o泛型的概念 n通过给类或接口增加类型参数,使得在使用该类时才需要指定 类型参数的实际对应的类型,从而可以提高程序的灵活性,防 止出现运行时类型错误,并可以避免数据的类型转换。 o泛型的实现:在类名和接口名后加入类型参数 n泛型的类定义 类名 n泛型的接口定义 接口名 o类型参数的格式(三种形式) n类型变量标识符 n类型变量标识符 extends 父类型 n类型变量标识符 extends 父类型1 public static void main(String args)TestGenericity tg=new TestGenericity();Integer b1=new Integer(1);Integer b2=new Integer(2);System.out.println (tg.sum(b1,b2); 第一种形式的类型参数。相当于 T extends java.lang.Object用类型参数指定方法参数的类型使用该类型具有的方法。 此处的类型是Object。实例化时,指定实际类型参数, 实际类型参数必须是泛型类型参 数的子类型。调用泛型类的方法。能用类型参数声明数组,但不能创建数组class TestGen T arg; /用类型参数声明数组,但 T arg=new T10;不行 public TestGen(T a) arg=a; public static void main(String args)Integer iarray=new Integer3;iarray0=2;iarray1=4;iarray2=6;TestGen tgI=new TestGen(iarray);for(int i=0;i tgS=new TestGen(args);for(int i=0;i i=集合对象.iterator(); i.hasNext(); ) 用i.next()取得下一个元素进行处理 使用迭代器遍历的好处:只要是实现了迭代器接口的类(通常是集合类)的 对象,都可以用统一的方法遍历。用迭代器遍历集合对象元素示例import java.util.*; class VectorFor public static void main(String args)Vector a=new Vector();a.add(“Hello“);a.add(“Java“);a.add(“World!“);for(Iterator i=a.iterator();i.hasNext();)String str=i.next();System.out.print (str+“ “); 不用迭代器遍历集合对象元素示例import java.util.*; class VectorForOld public static void main(String args)Vector a=new Vector();a.add(“Hello“);a.add(“Java“);a.add(“World!“);for(int i=0;i a=new Vector();a.add(“Hello“);a.add(“Java“);a.add(“World!“);for(String str:a)System.out.print (str+“ “); 简化for语句的总结for(类型 变量:表达式) 循环体 表达式的运算结果是一个数组对象或者集合对象。类型是数组对象的数据类型或者集合对象中元素的类型。在循环体中,变量将遍历数组对象的各元素或者集合对象的各元素 。作业10o 使用泛型改写作业:编写一个类MyArray, 包含一个你自己的复制数组的方法,功能与 System.arraycopy()相同。(示例见下页) o 写一个泛型类LinkedList,使用它可以处理 各种类型的单向链表。链表的节点类Node 包含一个某种类型对象的成员变量,以及下 一个节点对象引用的成员变量。(选做) o P173 第2题,第4题(要求用for的简化写 法)数组复制非泛型版示例class MyArray public Object arraycopy(Object first,Object second) for(int i=0;i public T arraycopy(T first,T second) for(int i=0;ifirst.length;i+) secondi=firsti; return second;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号