清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第12章 泛型(Generics)

第12章 泛型( Generics) 泛型入门 泛型进阶语法
第12章 • 泛型(Generics) – 泛型入门 – 泛型进阶语法

泛型之前 public class booleanFoo private Boolean fooi public void setFoo(Boolean foo) this foo =foo; public Boolean getFoo( return foo public class IntegerFoo i private Integer foo public void set Foo(Integer foo ) i this. fo fo public Integer getFoo ( return foo
没有泛型之前 public class BooleanFoo { private Boolean foo; public void setFoo(Boolean foo) { this.foo = foo; } public Boolean getFoo() { return foo; } } public class IntegerFoo { private Integer foo; public void setFoo(Integer foo) { this.foo = foo; } public Integer getFoo() { return foo; } }

没有泛型之前 Object为最上层的父类别,所以用它来实现 泛型( Generics)功能 public class objectFoo private object fooi public void set Foo(object foo) f this. foo foo public objectgetFoo() return foo
没有泛型之前 public class ObjectFoo { private Object foo; public void setFoo(Object foo) { this.foo = foo; } public ObjectgetFoo() { return foo; } } • Object为最上层的父类别,所以用它来实现 泛型(Generics)功能

没有泛型之前 ObjectFoo fool = new objectFoo()i ObjectFoo foo2 new objectFoo( fool. setFoo(new Boolean(true))i //记得转换实现类型 Boolean b =(Boolean) fool. getFoo(i foo2 setFoo (new Integer(10))i //记得转换实现类型 Integer i =(Integer) foo2 getFoo o)i 转换型态时用错了型态 ObjectFoo fool new objectFoo ()i fool. setFoo(new Boolean(true))i String s=(String) fool. getFoo ()i ClassCastException
• 转换型态时用错了型态 没有泛型之前 ObjectFoo foo1 = new ObjectFoo(); ObjectFoo foo2 = new ObjectFoo(); foo1.setFoo(new Boolean(true)); //记得转换实现类型 Boolean b =(Boolean) foo1.getFoo(); foo2.setFoo(new Integer(10)); //记得转换实现类型 Integer i =(Integer) foo2.getFoo(); ObjectFoo foo1 = new ObjectFoo(); foo1.setFoo(new Boolean(true)); String s = (String) foo1.getFoo(); ClassCastException

定义泛型类别 J2SE50之后,针对泛型( Generics)设计 的解决方案 使用用来声明一个型态持有者名称T public class GenericFoo private T fooi public void set Foo(t foo)I this. foo fooi public t getFoo()( return foo
定义泛型类别 • J2SE5.0之后,针对泛型(Generics)设计 的解决方案 • 使用用来声明一个型态持有者名称T public class GenericFoo { private T foo; public void setFoo(T foo) { this.foo = foo; } public T getFoo() { return foo; } }

定义泛型类别 可以使用魚括号一并指定泛型类别型态持 有者T真正的型态 GenericFoo fool= new Generic Fooi GenericFoo foo2= new GenericFoo()i fool. setFoo (new Boolean(true) Boolean b=foo1. getFoo();//不需要再转换型态 System. out. println(b) foo2 setFoo(new Integer(10))i Integer l=foo2. getFoO();/不需要再转换型态 System. out. println(i)i
定义泛型类别 • 可以使用角括号一并指定泛型类别型态持 有者T真正的型态 GenericFoo foo1 = new GenericFoo(); GenericFoo foo2 = new GenericFoo(); foo1.setFoo(new Boolean(true)); Boolean b = foo1.getFoo(); //不需要再转换型态 System.out.println(b); foo2.setFoo(new Integer(10)); Integer i = foo2.getFoo(); //不需要再转换型态 System.out.println(i);

定义泛型类别 型态或接口转换不再需要 省去恼人的 ClassCastEXception发生 编译程序可以帮您作第一层防线 Generic Foo fool= new GenericFoo( fool. setFoo(new Boolean(true))i Integer l=foo1. getFOO();/传回的是 Boolean型态 Generic Foo Demo.java: 7: incompatible types found java lang Boolean required: java. lang. Integer Integer i= fool. getFoo()i
定义泛型类别 • 型态或接口转换不再需要 – 省去恼人的ClassCastException发生 • 编译程序可以帮您作第一层防线 GenericFoo foo1 = new GenericFoo(); foo1.setFoo(new Boolean(true)); Integer i = foo1.getFoo(); //传回的是Boolean型态 GenericFooDemo.java:7: incompatible types found : java.lang.Boolean required: java.lang.Integer Integer i = foo1.getFoo();

定义泛型类别 声明及配置对象时不一并指定型态,默认 会使用 Object型态 GenericFoo foo3= new GenericFoo( foo3 setFoo (new Boolean(false))i 编译时编译程序会提出警讯 Note: GenericFoo Demo java uses unchecked or unsafe operations Note: Recompile with -Xlint: unchecked for details
定义泛型类别 • 声明及配置对象时不一并指定型态,默认 会使用Object型态 • 编译时编译程序会提出警讯 GenericFoo foo3 = new GenericFoo(); foo3.setFoo(new Boolean(false)); Note: GenericFooDemo.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details

定义泛型类别 Generic0o声明的foo1与 GenericFoo声明的foo2是不同的 GenericFoo fool new GenericFoo(i GenericFoo foo2= new GenericFoo( 不可以将foo1所参考的实例指定给foo2,或 是将foo2所参考的实例指定給foo1 incompatible types found: GenericFoo required: GenericFoo fool foo 2
定义泛型类别 • GenericFoo声明的foo1与 GenericFoo声明的foo2是不同的 • 不可以将foo1所参考的实例指定给foo2,或 是将foo2所参考的实例指定給foo1 GenericFoo foo1 = new GenericFoo(); GenericFoo foo2 = new GenericFoo(); incompatible types found : GenericFoo required: GenericFoo foo1 = foo2;

几个定义泛型的例子 类上声明两个类型持有者T1与T2 public class GenericFoo2 private Tl fool private T2 foo2i Generic Foo foo new GenericFoo()i
几个定义泛型的例子 • 类上声明两个类型持有者T1与T2 public class GenericFoo2 { private T1 foo1; private T2 foo2; … } GenericFoo foo = new GenericFoo();
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第11章 枚举类型.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第10章 例外处理.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第9章 管理类别档案.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第8章 继承、多型.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第7章 封装.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第6章 字串.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第5章 数组.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第4章 从autoboxing、unboxing认识对象.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第3章 语法入门.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第2章 入门准备.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第1章 了解Java.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第1章 oracle数据库概述.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第16章 基于Oracle数据库的应用开发.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第15章 PLSQL程序设计.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第14章 SQL语言基础.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第13章 网络管理.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第12章 数据库备份与恢复.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第11章 安全管理.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第10章 模式对象.ppt
- 《Oracle数据库基础教程》教学资源(PPT课件讲稿)第9章 数据库的启动与关闭.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第13章 对象容器.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第14章 输入、输出.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第15章 线程.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第16章 反射.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第17章 Annotation.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第18章 舍遗补缺.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第19章 文本编辑器.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第20章 JDBC入门.ppt
- 清华大学出版社:《java学习笔记》教学资源(PPT课件,JDK6课件和课本代码)第21章 Java SE6新功能简介.ppt
- 《C语言程序设计》课程教学资源(PPT课件)PPT课件 第五章 数组.ppt
- 南开大学:《上机试习题集—二级C语言程序设计》PDF电子书(编程和改错各100例).pdf
- 《Flash动画设计教程》PPT教学课件(共五章).ppt
- 陕西科学技术出版社:《计算机基础实用教程》PDF电子书(共六章).pdf
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第七章 系统设计.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第一章 绪论(主讲:郑莉).ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十章 C++标准模板库.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十一章 流类库与输入/输出.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十二章 异常处理.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第十三章 MFC库与Windows程序开发概述.ppt
- 清华大学:《C++语言程序设计》课程教学资源(PPT课件)第二章 C++简单程序设计.ppt