材料第10章泛泛型详解_第1页
材料第10章泛泛型详解_第2页
材料第10章泛泛型详解_第3页
材料第10章泛泛型详解_第4页
材料第10章泛泛型详解_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

基础系列Java讲师:陈豪泛型详解课程目标泛型简介泛型类限制泛型可用类型类型通配声明泛型方法泛型简介泛型简介泛型是JDK1.5引入的新特性,也是最重要的一个特性。泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的。泛型的原理就是“类型的参数化”,即把类型看做参数。也就是说把所要操作的数据类型看做参数,就像方法的形式参数是运行时传递的值的占位符一样。简单的说,类型变量扮演的角色就如同一个参数,它提供给编译器用来类型检查的信息。泛型可以提高代码的扩展性和重用性总结:所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型,泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。泛型类问学员一个问题:在泛型出现之前,如果我们需要产生多个对象,每个对象的逻辑完全一样,只是对象内的成员变量的类型不同。那我们如何去做?创建多个类文件,给每个类中的成员变量设置指定的数据类型。创建一个类文件,给这个类中的成员变量设置Object数据类型。缺点:这种方式会导致类的膨胀,重用性太差。缺点:编译的时候正常,但运行的时候可能会异常。泛型类能很好的解决以上两个问题泛型类泛型类示例publicclassGenClass<T>{

privateTobj;

publicGenClass(Tobj){

this.obj=obj;

}publicTgetObj(){returnobj;}publicvoidsetObj(Tobj){this.obj=obj;}}1、泛型的类型参数可以是泛型类2、泛型类可以同时设置多个类型参数3、泛型类可以继承泛型类4、泛型类可以实现泛型接口限制泛型可用类型6在定义泛型类别时,默认在实例化泛型类的时候可以使用任何类型,但是如果想要限制使用泛型类型时,只能用某个特定类型或者是其子类型才能实例化该类型时,可以在定义类型时,使用extends关键字指定这个类型必须是继承某个类,或者实现某个接口。当没有指定泛型继承的类型或接口时,默认使用

TextendsObject,所以默认情况下任何类型都

可以做为参数传入.类型通配声明7同一泛型类,如果实例化时给定的实际类型不同,则这些实例的类型是不兼容的,不能相互赋值。Generic<Boolean>f1=newGeneric<Boolean>();Generic<Integer>f2=newGeneric<Integer>();f1=f2;//发生编译错误Generic<Object>f=f1;//f1和f类型并不兼容,发生编译错误f=f2;//f2和f类型同样不兼容,也会发生编译错误泛型类实例之间的不兼容性会带来使用的不便。我们可以使用泛型通配符(?)声明泛型类的变量就可以解决这个问题。类型通配声明8泛型通配的方式“?”代表任意一个类型。

和限制泛型的上限相似,同样可以使用extends关键字限定通配符匹配类型的上限:还可以使用super关键词将通配符匹配类型限定为某个类型及其父类型Generic<Boolean>f1=newGeneric<Boolean>();Generic<?>f=f1;Generic<Dog>f1=newGeneric<Dog>();Generic<?extendsAnimal>f=f1;Generic<Animal>f1=newGeneric<Animal>();Generic<?superDog>f=f1;泛型方法9不仅类可以声明泛型,类中的方法也可以声明仅用于自身的泛型,这种方法叫做泛型方法。其定义格式为:访问修饰符<泛型列表>返回类型方法名(参数列表){

实现代码

}在泛型列表中声明的泛型,可用于该方法的返回类型声明、参数类型声明和方法代码中的局部变量的类型声明。类中其他方法不能使用当前方法声明的泛型。提示:是否拥有泛型方法,与其所在的类是否泛型没有关系。要定义泛型方法,只需将泛型参数列表置于返回值前。泛型方法10什么时候使用泛型方法,而不是泛型类呢?添加类型约束只作用于一个方法的多个参数之间、而不涉及到类中的其他方法时。施加类型约束的方法为静态方法,只能将其定义为泛型方法,因为静态方法不能使用其所在类的类型参数。泛型案例讲解课堂示例:要求自定义一个容器,此容器可以存放指定类型的数据。通过add方法来向容器添加数据,通过get方法可以取出指定位置的数据,通过size方法可以获得容器中数据的多少,

温馨提示

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

评论

0/150

提交评论