java核心课件2第1章

上传人:仙*** 文档编号:171475478 上传时间:2022-11-27 格式:PPT 页数:20 大小:209.02KB
收藏 版权申诉 举报 下载
java核心课件2第1章_第1页
第1页 / 共20页
java核心课件2第1章_第2页
第2页 / 共20页
java核心课件2第1章_第3页
第3页 / 共20页
资源描述:

《java核心课件2第1章》由会员分享,可在线阅读,更多相关《java核心课件2第1章(20页珍藏版)》请在装配图网上搜索。

1、Java2 核心技术主讲教师:殷黎E_mail:yl_本书课程安排v第1章 泛型v第2章 枚举v第3章 集合框架v第4章 实用类v第5章 网络编程基础v第6章 JDBCv第7章 JavaBeanv第8章 Swingv第9章 RMI第1章 泛型v了解泛型相关概念;v会创建泛型类和泛型方法;v了解通配符和受限泛型;v能熟练使用泛型类。1.1 泛型概述v首先分析、使用1-3页的例子程序;v这是一个实现可动态扩展的数组的程序,且能存放任意类型的数据;v从使用中可以看到,存放的数据取出来用时,必须强制转化为它的实际类型;v这样不能保证程序类型的安全,增加了程序出错的几率,而且带来了麻烦;v因此java中

2、引入了“泛型”的概念。vpublic class ObjectGroup vprivate Object elements;vprivate int size;vpublic ObjectGroup()vinit();vvprivate void init()velements=new Object10;vsize=0;vvpublic void add(Object obj)vif(size=elements.length)vObject temp=new Objectelements.length*2;vSystem.arraycopy(elements,0,temp,0,elements

3、.length);velements=temp;vvelementssize=obj;vsize+;vpublic void clear()vinit();vvpublic Object getElements()vObject temp=new Objectsize;vSystem.arraycopy(elements,0,temp,0,size);vreturn temp;vvpublic Object get(int index)vreturn elementsindex;vvpublic int getSize()vreturn size;vvv泛型(Generics)本质上就是提供类

4、型的”类型参数”,它们也被称为参数化类型(parameterized type)或参量多态(parametric polymorphism);v也指具有在多种数据类型上皆可操作的含义;v声明时用参数化类型代替,使用时指定具体类型;vGJ(Generic Java)是对Java语言的一种扩展,用GJ编写的程序看起来和普通Java程序基本相同,只不过多了一些参数化的类型同时少了一些类型转换;v实际上,编译时这些GJ程序也是首先被转化成一般的不带泛型的Java程序后再进行处理的;v泛型的特点:类型安全、向后兼容、层次清晰、性能收益1.2 泛型类v泛型类就是具有一个或多个类型参数的类;v1-4页代码中

5、尖括号中的内容就代表类型参数,多个类型参数用“,”隔开;v类型参数就跟在方法中普通的参数一样。就像一个方法有“形参”来描述它操作的参数的种类,一个泛型也有“形式类型参数”;v当一个方法被调用,“实参”替换“形参”,方法被执行;当一个泛型声明被调用,“实际类型参数”取代“形式类型参数”;v类型参数通常用单个大写字母命名;v一般:E表示集合的元素类型,T表示任意类型,K,V表示表的键和值;v类型参数一定是类类型;vpublic class GenericGroup vprivate E elements;vprivate int size;vvpublic GenericGroup()vinit(

6、);vvvprivate void init()velements=(E)new Object10;vsize=0;vvvpublic 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;vvelementssize=obj;vsize+;vvpublic void clear()vinit();vvvpublic Object getElements()

7、vE temp=(E)new Objectsize;vSystem.arraycopy(elements,0,temp,0,size);vreturn temp;vvvpublic E get(int index)vreturn elementsindex;vvvpublic int getSize()vreturn size;vv1.2.1 泛型类的使用v声明:class 类名 /类体 v使用:类名 变量名=new 类名();1.2.2 泛型类的局限v类型参数不能实例化:new E();/errorv不能实例化类型参数的数组:E arrE=new E10;/errorv类的静态变量不能声明为

8、类型参数类型:public static E name;/errorv泛型类不能继承自Throwable以及其子类:public class Problem extends Exeption/error1.2.3 泛型与子类继承v例:GenericGroup gi=new GenericGroup();GenericGroup gn=new GenericGroup();gn=gi;/errorvGenericGroup和GenericGroup 的数据类型都是GenericGroup,因此它们之间没有任何关系,Number和Integer的继承关系,对于它们不适用;v这一点对于类型安全来讲是

9、必要的;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有多个限定类型时,其中最多只能有一个类类型,且放在第一个,多个之间用&隔开;vclas

10、s GenericGroup;v上例中传入的实际类型参数必须是Number的子类,且实现了接口Comparable和Serializable。v实例化时,实际类型参数应在范围中v定义一个showName方法,使其接受GenericGroup类型的实参;vpublic static void showName(GenericGroup group)for(int i=0;igroup.getSize();i+)System.out.println(Group.get(i).getName();v注意:这个方法在向其传实参时只能传GenericGroup,不能传GenericGroup;v修改上面

11、的方法,将上限通配符运用到形参中,使其可以传入GenericGroup。1.6 上限通配符vpublic static void showName(GenericGroup group)for(int i=0;iGroup.getSize();i+)System.out.println(group.get(i).getName();v修改1.2.3节中的程序:GenericGroup gi=new GenericGroup();GenericGroup gn=new GenericGroup();gn=gi;v注意:此时,gn.add(new Integer(2),是错误的用法;v因为“?ex

12、tends Number”是上限通配符,表示一个未知的任何Number的子类;1.7 泛型方法v类型声明也可以用来声明泛型方法,而且这种泛型方法还可以用在非泛型类中。v泛型方法允许类型参数被用来表示方法的一个或多个参数之间的依赖关系,或者参数与其返回值的依赖关系。v下面我们定义一个静态方法,返回GenericGrooup集合中的最大值:vpublic static E extends Comp E max(GenericGroup group)v从方法的声明可以看出:泛型方法的类型参数位于方法的返回类型前,并用括起来。v可以看出,只要是实现了Comp的类型,都可以用于此方法。v泛型方法可以位于非泛型类中vpublic static A extends Comp A max(GenericGroup group)A max=group.get(0);for(int i=1;i0)max=group.get(i);return max;

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!