泛型程序设计.doc_第1页
泛型程序设计.doc_第2页
泛型程序设计.doc_第3页
全文预览已结束

下载本文档

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

文档简介

泛型程序设计1所谓泛型就是将类型也作为一种参数,来进行指定(类型参数指定的类型中不包括基本类型)。2没有使用泛型时,存在的问题:(1)声明创建列表时,就不能告诉系统,列表中将要存放何种类型的对象。(2)每次从列表中取出对象时,都必须引用进行强制类型转换,因为没有使用泛型的列表将任何对象都作为java.lang.Object类型返回。3 范型类:把类型作为参数,让类定义对象时确定范型类型。4泛型类或接口的声明:(1)语法:public class 类名 类体 注:类型变量一定放在类型的后面。(2)示例:package ee;class MyValue private T value1;private U value2;public T getValue1() return value1;public void setValue(T value1, U value2) this.value1 = value1;this.value2 = value2;public U getValue2() return value2;public class Test public static void main(String args) MyValue mv1 = new MyValue();mv1.setValue(我是孙利军, 8888);System.out.println(第一个元素为: + mv1.getValue1() + n + 第二个元素为:+ mv1.getValue2();MyValue mv2 = new MyValue();mv2.setValue(8888, 我是孙利军);System.out.println(第一个元素为: + mv2.getValue1() + n + 第二个元素为:+ mv2.getValue2();5泛型方法的开发:(1)语法:public static 返回类型 方法名(参数列表方法体)(2)泛型方法既可以在不同类中定义,也可以在泛型类中定义。泛型类与泛型方法的区别:泛型方法的类型参数声明要放在方法返回类型声明之前,而泛型类则必须放在类声明之后。(3)示例:package ee;public class Test / 定义泛型方法public static T getLast(T a) return aa.length - 1;public static void main(String args) String str=这是第一个元素,这是第二个元素,这是第三个元素;String src=getLast(str);System.out.println(最后一个元素为:+src);(4)调用泛型方法时,可以明确给出泛型参数的类型,也可以不明确给出,此时系统自动调用。6.类型变量的限制(1)如果希望类型变量的类型有一定的范围,而不是任何类型都可以,则需要借助于:类型变量extends 限定类型序列。限定类型序列中可以有多个类型,这些类型可以是类,也可以是接口,多个类型之间用”&”分割(注意:限定类型序列中只能有一个类,可以有多个接口,如果限定类型中有类,则必须把类放在第一个)7.泛型通配符的使用:(1)泛型参数的继承与普通类的继承不同,如果A是B的子类,则G并不可以看做G,如果想要实现这样的效果,则必须借助于通配符”?”.(2)示例:package ee;import java.util.ArrayList;public class Test public static void printMyValue(ArrayList mv)System.out.println(该列表中的值为:+mv);public static void main(String args) ArrayList as=new ArrayList();for(int i=0;i10;i+)as.add(i+);printMyValue(as);注:ArrayList表示可以接受ArrayList的参数,如 但如果反过来,将传给就不行了。(3)泛型通配符使用时的注意事项:泛型通配符只能用于引用的声明中,不可以在创建对象时使用。不可以使用采用了泛型通配符的引用调用使用了泛型参数的方法。8有限制的通配符:(1)格式:? extends 类名或接口名;表示泛型通配符能够匹配的类型必须是指定类及其子类,或为指定接口或其子接口。9注意:1- 范型类所生成的对象的规定范型不同,则不能相互传引用Object obj=abc;正确ArrayList list2=new ArrayList();则错误,因为类型不匹配。2-定义范型对象空间时不能使用范型的通配符?.在定义对象名称时,如果希望这个名称可以接收多种范型空间,可以使用通配符。ArrayList list3=new ArrayList();正确ArrayList list4=new ArrayList();则错误3- 可以在范型类定义时,添加范型限定,语法规则 :规定在指定范型T类型时必须在 限定类的范围内(只能使用限定类型,或其子类) 如果 那么指定的类必须继承限定类并且必须实现所有的限定接口 我们还可以对通配符进行限定,来规定通配符的范围 .通配符不允许复合添加限定接口“。4- 定义范型类型的指代名称的规范: E 集合框架中的范型使用 ;K,V 在映射中使用的规范;如果定义任意类型 T,U,S。5- 范型的擦除:泛型擦除是指,如果在调用了一个声明了泛型参数的类时,不给出泛型参数的类型,系统会自动按照一定的规则来设置泛型参数的类型。(1)如果在使用范型类时,不指定范型类型,会擦除成Object类型;(2)但是如果有限定的范型,我们则擦除成限定类型;(3)如果有范型类型限定并且有接口限定的类型,会擦除成限定类,不管接口。7- 范型的对象类型检查,不能做到范型类型的检查,例如:ArrayList lis1=new ArrayList();System.out.println(lis1 instanceof Arra

温馨提示

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

评论

0/150

提交评论