java核心课件2-第1章.ppt_第1页
java核心课件2-第1章.ppt_第2页
java核心课件2-第1章.ppt_第3页
java核心课件2-第1章.ppt_第4页
java核心课件2-第1章.ppt_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java2 核心技术 主讲教师:殷黎 E_mail: yl_ 本书课程安排 v第1章 泛型 v第2章 枚举 v第3章 集合框架 v第4章 实用类 v第5章 网络编程基础 v第6章 JDBC v第7章 JavaBean v第8章 Swing v第9章 RMI 第1章 泛型 v了解泛型相关概念; v会创建泛型类和泛型方法; v了解通配符和受限泛型; v能熟练使用泛型类。 1.1 泛型概述 v首先分析、使用1-3页的例子程序; v这是一个实现可动态扩展的数组的程序,且 能存放任意类型的数据; v从使用中可以看到,存放的数据取出来用时 ,必须强制转化为它的实际类型; v这样不能保证程序类型的安全,增加了程序 出错的几率,而且带来了麻烦; v因此java中引入了“泛型”的概念。 vpublic class ObjectGroup vprivate Object elements; vprivate int size; vpublic ObjectGroup() vinit(); v vprivate void init() velements = new Object10; vsize = 0; v vpublic void add(Object obj) vif(size = elements.length) vObject temp = new Objectelements.length * 2; vSystem.arraycopy(elements, 0, temp, 0, elements.length); velements = temp; v velementssize = obj; vsize+; v public void clear() vinit(); v vpublic Object getElements() vObject temp = new Objectsize; vSystem.arraycopy(elements, 0, temp, 0, size); vreturn temp; v vpublic Object get(int index) vreturn elementsindex; v vpublic int getSize() vreturn size; v v v泛型(Generics)本质上就是提供类型的”类型参数”, 它们也被称为参数化类型(parameterized type)或参 量多态(parametric polymorphism); v也指具有在多种数据类型上皆可操作的含义; v声明时用参数化类型代替,使用时指定具体类型; vGJ(Generic Java)是对Java语言的一种扩展,用GJ 编写的程序看起来和普通Java程序基本相同,只不 过多了一些参数化的类型同时少了一些类型转换; v实际上,编译时这些GJ程序也是首先被转化成一般 的不带泛型的Java程序后再进行处理的; v泛型的特点:类型安全、向后兼容、层次清晰、性 能收益 1.2 泛型类 v泛型类就是具有一个或多个类型参数的类; v1-4页代码中尖括号中的内容就代表类型参数,多个类型参 数用“,”隔开; v类型参数就跟在方法中普通的参数一样。就像一个方法有“ 形参”来描述它操作的参数的种类,一个泛型也有“形式类型 参数”; v当一个方法被调用,“实参”替换“形参”,方法被执行;当一 个泛型声明被调用,“实际类型参数”取代“形式类型参数”; v类型参数通常用单个大写字母命名; v一般:E表示集合的元素类型, T表示任意类型, K,V表示表的键和值; v类型参数一定是类类型; vpublic class GenericGroup vprivate E elements; vprivate int size; v vpublic GenericGroup() vinit(); v v vprivate void init() velements = (E)new Object10; vsize = 0; v v vpublic void add(E obj) vif(size = elements.length) vE temp = (E)new Objectelements.length * 2; vSystem.arraycopy(elements, 0, temp, 0, elements.length); velements = temp; v velementssize = obj; vsize+; v vpublic void clear() vinit(); v v vpublic Object getElements() vE temp = (E)new Objectsize; vSystem.arraycopy(elements, 0, temp, 0, size); vreturn temp; v v vpublic E get(int index) vreturn elementsindex; v v vpublic int getSize() vreturn size; v v 1.2.1 泛型类的使用 v声明:class 类名 /类体 v使用:类名 变量名 = new 类名(); 1.2.2 泛型类的局限 v类型参数不能实例化: new E();/ error v不能实例化类型参数的数组: E arrE = new E10;/ error v类的静态变量不能声明为类型参数类型: public static E name;/ error v泛型类不能继承自Throwable以及其子类: public class Problem extends Exeption / error 1.2.3 泛型与子类继承 v例: GenericGroup gi = new GenericGroup(); GenericGroup gn = new GenericGroup(); gn = gi; / error vGenericGroup和GenericGroup 的数据类型都是GenericGroup,因此它 们之间没有任何关系,Number和Integer的继承关 系,对于它们不适用; v这一点对于类型安全来讲是必要的; v但可以向gn中添加Integer类型的数据:gn.add(18) 1.3 泛型接口 v与泛型类差不多,只是将关键字class改为 interface即可。 public interface Comp int compTo(T a); v实际实现时,将类型参数传入实际类型即可 :class Person implements Comp 1.5 受限泛型 v当类型参数约束在某一范围内时,可以使用受限泛 型; vclass GenericGroup; v受限泛型用关键字extends,即便限定类型是接口也 用extends; v有多个限定类型时,其中最多只能有一个类类型, 且放在第一个,多个之间用 i,不能传 GenericGroup; v修改上面的方法,将上限通配符运用到形参中,使 其可以传入GenericGroup。 1.6 上限通配符 vpublic static void showName (GenericGroup group) for(int i=0; i gi = new GenericGroup(); GenericGroup gn = new GenericGroup(); gn = gi; v注意:此时,gn.add(new Integer(2),是错 误的用法; v因为“? extends Number”是上限通配符,表 示一个未知的任何Number的子类; 1.7 泛型方法 v类型声明也可以用来声明泛型方法,而且这种泛型方法还可 以用在非泛型类中。 v泛型方法允许类型参数被用来表示方法的一个或多个参数之 间的依赖关系,或者参数与其返回值的依赖关系。 v下面我们定义一个静态方法,返回GenericGrooup集合中的 最大值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论