【Java精品源码栏目提醒】:网学会员,鉴于大家对Java精品源码十分关注,论文会员在此为大家搜集整理了“JX-Java程序设计(五)-6 - 其它资料”一文,供大家参考学习!
教学课件
Java程序设计第五章 泛型、枚举与for语句的简化写法 主讲人:王春平 Email : wangcpzjut.edu.cn 浙江工业大学计算机学院 主要内容 泛型 枚举 for语句的简化写法 2 泛型1 应用泛型Genericity可以减少数据的类型转换,并避免程序类型转换错误,并提高程序代码的复用性和运行效率。
泛型实现:通过给类或接口增加类型参数(TypeParameter)来实现。
回顾:不带泛型的类定义格式如下类修饰词 class 类名 extends 父类名 implements 接口名称列表类体 3 泛型2 带泛型的类定义格式如下:类修饰词 class 类名extends 父类名 implements 接口名称列表 类体 带泛型的接口定义格式如下:类修饰词 interface 接口名extends 接口名称列表 类体 4 泛型3 泛型中类型参数的定义格式有3种: a 类型变量标识符 b 类型变量标识符 extends 父类型 c 类型变量标识符 extends 父类型1 父类型2 … 父类型n说明:1)格式a实际上等价于:类型变量标识符 extends
java.lang.object。
2)格式b中的类型变量是父类型的子类型。
3)格式c中的所有父类型中只能有一个是类(或没有),其余均为接口。
此时要求类型变量对应的实际类型应具备各个父类型的所有能力。
5 泛型4 泛型举例: public class J_Add //类体 说明:1)在类J_Add中可以将T作为一种已知的类型(如同int boolean String等一样)来使用;2)在实际使用类J_Add时即构建对象实例时,需要将类型变量T替换为Number类型的子类型。
3)当类型变量T实现了多个接口时,替换时也要求替换类实现了这些接口中的所有方法。
6 泛型5 泛型例程格式1 J_Add.
java P160: public class J_Add public String mb_sumT a1 T a2 T a3 returna1.toString a2.toString a3.toString // 方法mb_sum结束 public static void mainString args J_Add b new J_Add Integer a1 new Integer1 Integer a2 new Integer2 Integer a3 new Integer3 System.out.println b.mb_suma1 a2 a3 // 方法main结束 // 类J_Add结束 7 泛型6 泛型例程格式2 J_AddInterface.
java P161:interface J_Interface public static void mainString args public int mb_sumT a1 T a2 T a3 J_AddInterface b new // 接口J_Interface结束 J_AddInterface Integer a1 new Integer1public class J_AddInterface implements J_Interface Integer a3 new Integer3 System.out.println b.mb_suma1 a2 a3 public int mb_sumT a1 T a2 T a3 // 方法main结束 // 类J_AddInterface结束 int b1 a1.intValue 说明: int b2 a2.intValue 1)类J_AddInterface有一个类型变量T,T int b3 a3.intValue 是Number子类型; return b1 b2 b3 2) 类J_AddInterface的类型变量T同时是接 // 方法mb_sum结束 口J_Interface的实际类型。
8 泛型7 泛型例程格式3 J_Genericity.
java P163:class J_C1 class J_T public void mb_methodA public void mb_methodT T t System.out.printA t.mb_methodA // 方法mb_methodA结束 t.mb_methodB // 类J_C1结束 // 方法mb_methodT结束interface J_C2 // 类J_T结束 public void mb_methodB public class J_Genericity // 接口J_C2结束 class J_C3 extends J_C1 implements J_C2 public static void mainString args public void mb_methodB J_T a new J_T a.mb_methodT new J_C3 System.out.printB // 方法main结束 // 方法mb_methodB结束 // 类J_Genericity结束 // 类J_C3结束 9 主要内容 泛型 枚举 for语句的简化写法 10 枚举1 枚举类型目的是定义枚举常量。
枚举类型的定义格式如下: 枚举类型修饰词列表 enum 枚举类型标识符 说明: 1)枚举类型修饰词可以没有或是public,不能是protected private和abstract。
2)如果枚举类型修饰词为public,则枚举类型定义所在文件的文件名前缀必须与枚举类 型名相同,并且该枚举类型可以为所有软件包的所有类和接口访问。
3)如果没有枚举类型修饰词,则该枚举类型只能为同一个软件包内使用。
enum E_SEASON public enum E_WEEKEND 春季 夏季 秋季 冬季 saturday sunday 11 枚举2 枚举类型变量定义格式如下: 枚举类型标识符 枚举变量 或 枚举类型标识符 枚举变量1 枚举变量2 … 枚举变量n 或 枚举类型标识符 枚举数组变量 . 说明:访问枚举常量可通过枚举变量或枚举类型加 操作来进行。
s1E_SEASON.春季 trueE_SEASON s1 s2.夏季E_SEASON.夏季 trues1E_SEASON.春季 s1E_SEASON.夏季E_SEASON s2 s1E_SEASON.春季 falses2E_SEASON.values s1“夏季” s2.冬季E_SEASON.秋季 12 枚举3 枚举类型及其变量的相关方法 方法原型 功能描述 public String name 返回枚举常量对应的字符串 public String toString 返回枚举常量对应的字符串 E values 以数组形式返回该枚举类型的所有枚举常 量 String tmps1.nameE_SEASON s1 String tmp1s1.toStrings1E_SEASON.春季 String tmp2E_SEASON.秋季.name E_SEASON s2 String tmp3E_SEASON.秋季.toString s2E_SEASON.values String tmp4s20.name String tmp5春季.toString 13 String tmp6春季.name 枚举4 枚举例程(J_Enum.
java P166)enum E_SEASON 春季 夏季 秋季 冬季 // 枚举E_SEASON结束public class J_Enum 不能写作:E_SEASON.春季 不能写作:si.春季 public static void mainString args E_SEASON sa E_SEASON.values for int i0 i sa.length i switchsai case 春季: System.out.println春季花满天 break case 夏季: System.out.println夏季热无边 break case 秋季: System.out.println秋季果累累 break case 冬季: System.out.println冬季雪皑皑 break // switch结构结束 // for循环结束 // 方法main结束 // 类J_Enum结束 14 主要内容 泛型 枚举 for语句的简化写法 15 for语句的简化写法1 针对迭代器Iterator和数组,for语句可以简化成如下写法: for 类型 标识符: 表达式 循环体 说明: 1)当类型是迭代器Iterator时,则可以隐式地通过Iterator的成员方法 hasNext和next方法来逐一访问迭代器的所有元素,此时的类型是迭代器 的元素类型,标识符可以是任意合法标识符。
实际上这种简化写法等价于 如下写法: for Iterator i表达式.iterator i.hasNext 类型 标识符i.next 语句或语句块 16 for语句的简化写法2 for语句针对迭代器Iterator的简化例程 J_VectorFor.
java P169 : import
java.util.Iterator import
java.util.Vector public class J_VectorFor public static void mainString args Vector a new Vector a.add a a.add b a.add c for String c : a System.out.printc System.out.println for Iterator ia.iterator i.hasNext String c i.next System.out.printc // for循环结束 System.out.println // 方法main结束 17 // 类J_VectorFor结束 for语句的简化写法3 针对迭代器Iterator和数组,for语句可以简化成如下写法: for 类型 标识符: 表达式 循环体 说明: 2)当类型是数组类型时,则可以隐式地通过数组下标逐一访问数组的所有 元素,此时的类型是数组的元素类型,标识符可以是任意合法标识符。
实 际上这种简化写法等价于如下写法: 类型 ca表达式 for int i0 i