《Java程序设计课件第五章泛型枚举与for语句的简化写法.ppt》由会员分享,可在线阅读,更多相关《Java程序设计课件第五章泛型枚举与for语句的简化写法.ppt(17页珍藏版)》请在金锄头文库上搜索。
1、Java语言程序设计语言程序设计第五章第五章 Java高级特性:高级特性:泛型与枚举泛型与枚举 讲授人:傅晓阳 教授上章回顾上章回顾1.请列举四种主要的字节流与字符流类。2.File类与FileReader的区别DavidFuDavidFu本章课程纲要本章课程纲要枚举枚举泛型泛型装箱与拆箱装箱与拆箱DavidFuDavidFu泛型泛型njava语言中引入泛型的主要目的是可以建立具有语言中引入泛型的主要目的是可以建立具有类型安全的数据结构,如散列表(类型安全的数据结构,如散列表(Hashtable)、)、矢量容器(矢量容器(Vetctor)等数据结构。)等数据结构。n在使用泛型类建立数据结构时,
2、不必进行强制类型在使用泛型类建立数据结构时,不必进行强制类型转换。转换。njava语言从语言从jdk1.5开始支持泛型,简化集合类中开始支持泛型,简化集合类中的类型转换过程。的类型转换过程。 DavidFuDavidFu泛型泛型nClass HashtablenObject put (Object key, Object value)nObject get(Object key)nn参见例题7-1,7-DavidFuDavidFu定义泛型类与泛型方法定义泛型类与泛型方法 n实现泛型:给类和接口添加类型参数实现泛型:给类和接口添加类型参数 n泛型类泛型类(generic class):一个被类型
3、参数化了:一个被类型参数化了的类或接口。的类或接口。 n泛型类定义格式为:泛型类定义格式为:n类访问修饰符 class npublic class ArrayList n其中ItemType是泛型类ArrayList的类型参数。 DavidFuDavidFu定义泛型类与泛型方法定义泛型类与泛型方法 n普通方法定义格式为:普通方法定义格式为:npublic void testShape(int a, int b) n泛型方法定义格式为:泛型方法定义格式为:n类访问修饰符 返回类型 方法名称(参数列表) npublic static void testGenerics(int a) n对于泛型方法
4、中的参数定义与泛型类相同。两个泛型方法不能有相同的名称和参数类型。DavidFuDavidFu定义泛型类与泛型方法定义泛型类与泛型方法 v泛型类的实例化格式为:泛型类的实例化格式为:v泛型类名称泛型类名称 实例对象实例对象=new泛型类名称泛型类名称( );vArrayList al=new ArrayList( );v具体程序如下:具体程序如下:vclass Hashtable v .v Value put(Key k, Value v) .v Value get(Key k) DavidFuDavidFu类型参数的基本用法类型参数的基本用法 n参数类型变量同样具有继承性,并可以扩展相应的接
5、参数类型变量同样具有继承性,并可以扩展相应的接口。口。n类型参数变量的表示格式为:类型参数变量的表示格式为:n类型参数变量n类型参数变量 extends 父类n类型参数变量 extends 父类1&接口1&接口2& 接口nn参见例题参见例题7-3、7-4、7-DavidFuDavidFu本章课程纲要本章课程纲要枚举枚举 泛型泛型装箱与拆箱装箱与拆箱DavidFuDavidFu枚举枚举 n枚举枚举(enumeration)是是java中一个特殊的类,采中一个特殊的类,采用枚举类型可以使程序更贴近面向对象的编程思想,用枚举类型可以使程序更贴近面向对象的编程思想,从而使程序设计更为简洁明了从而使程序
6、设计更为简洁明了n所有枚举都是所有枚举都是java.lang.Enum的隐式子类。的隐式子类。n创建枚举类型的主要目的是为了定义一些枚举常量。创建枚举类型的主要目的是为了定义一些枚举常量。nJDK1.5以后的新枚举定义方式以后的新枚举定义方式nPublic enum MyColornRED;nYELLOW;nBLUE;n DavidFuDavidFu枚举枚举 njava内置枚举的优点如下:内置枚举的优点如下:n枚举类型是安全的,不必建立枚举变量和枚举中整数常量的对应关系。n枚举是一个类,因此也能有域变量和方法,并且可以实现接口。n枚举能够在switch 语句中以一种直接方式进行访问。n枚举的基
7、本定义格式为:枚举的基本定义格式为:n枚举类型访问修饰符 enum 枚举类型名称nn枚举常量1,枚举常量2,枚举常量DavidFuDavidFu本章课程纲要本章课程纲要枚举枚举泛型泛型装箱与拆箱装箱与拆箱DavidFuDavidFu装箱与拆箱装箱与拆箱 njava语言中,经常需要进行基本数据类型与引用数语言中,经常需要进行基本数据类型与引用数据类型的转换。每个基本数据类型都对应一个引用据类型的转换。每个基本数据类型都对应一个引用封装类。封装类。n在在JDK1.5版本颁布后,为了摆脱繁琐的转换过程,版本颁布后,为了摆脱繁琐的转换过程,采用自动装箱采用自动装箱/拆箱拆箱(boxing/unboxi
8、ng)转换,转换,用于简化基本数据类型与引用类型的转换。用于简化基本数据类型与引用类型的转换。 DavidFuDavidFu装箱与拆箱装箱与拆箱 n无自动装箱无自动装箱/拆箱的例子:拆箱的例子:nFloat fObject;nfloat fvalue;nArrayList arrayList=new ArrayList( );nfvalue=15.3f;nfObject =new Flaot(fvalue);narrayList.put(fObject); DavidFuDavidFu装箱与拆箱装箱与拆箱 n使用自动装箱使用自动装箱/拆箱方法可以简化以上的程序:拆箱方法可以简化以上的程序:nfloat fvalue;nArrayList arrayList=new ArrayList( );nfvalue=15.3f;narrayList.put(fvalue);n参见例题参见例题7-DavidFuDavidF