泛型基本知识_第1页
泛型基本知识_第2页
泛型基本知识_第3页
泛型基本知识_第4页
泛型基本知识_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构(Java版) 北京信息科技大学 计算机学院 段瑞雪12泛型31 public class GenericTest 2 public static void main(String args) 3 List list = new ArrayList(); 4 list.add(qqyumidi); 5 list.add(corn); 6 list.add(100); 7 8 for (int i = 0; i list.size(); i+) 9 String name = (String) list.get(i); / 110 System.out.println(name: + n

2、ame);11 12 13 /apidocs/apidoc?api=jdk-zhInteger.parseInt(String)程序实现源码泛型泛型,即“参数化类型”。顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 一般用T表示。451 public class GenericTest2 2 3 public static void main(String args) 4 /* 5 List list = new ArrayList(); 6 list.add(qqyumidi

3、); 7 list.add(corn); 8 list.add(100); 9 */10 11 List list = new ArrayList();12 list.add(qqyumidi);13 list.add(corn);14 /list.add(100); / 1 提示编译错误15 16 for (int i = 0; i list.size(); i+) 17 String name = list.get(i); / 218 System.out.println(name: + name);19 20 21 public class List Boolean add(T key)

4、; T get(T key); T set(T key);.6自定义泛型接口、泛型类和泛型方法7public class Box private int t; public void set(int t) this.t = t; public int get() return t; 8public class Box private float t; public void set(float t) this.t = t; public float get() return t; 9public class Box private T t; public void set(T t) this.

5、t = t; public T get() return t; 泛型类10public class Box private T t; public void set(T t) this.t = t; public T get() return t; public static void main(String args) Box integerBox = new Box(); Box stringBox = new Box(); integerBox.set(new Integer(10); stringBox.set(new String(菜鸟教程); System.out.printf(整

6、型值为 :%dnn, integerBox.get(); System.out.printf(字符串为 :%sn, stringBox.get(); 为什么引入泛型的概念? 1. 类型检查。 2. 节省空间,一个泛型类,可以处理各种数据类型的数据。 1112ADT Set数据:集合中的数据元素,数据元素的数据类型为T操作boolean isEmpty();int size();T search(T key);boolean contains(T key);boolean add(T x);T remove(T key);void clear();boolean containsAll(Sets

7、et);boolean addAll(Setset);13接口14声明一个接口(最简单的情况)15接口的实际应用16interface USB / 操作标准 public void install() ; public void work() ;class Computer public void plugin(USB usb) usb.install() ; usb.work() ; class Phone implements USB public void install() System.out.println(安装手机驱动程序。) ; public void work() Syste

8、m.out.println(手机与电脑进行工作。) ; class Printer implements USB public void install() System.out.println(安装打印机驱动程序。) ; public void work() System.out.println(进行文件打印。) ; class MP3 implements USB public void install() System.out.println(安装MP3驱动程序。) ; public void work() System.out.println(进行MP3拷贝。) ; public cl

9、ass TestDemo public static void main(String args) Computer c = new Computer() ; c.plugin(new Phone() ; c.plugin(new Printer() ; c.plugin(new MP3(); 为什么要引入接口的概念? 1. 减少重复定义。 2. 便于利用基类引用,处理各种类型的子类,实现多态。1718接口和泛型19public interface Set 泛型接口public class SortSet implements SetSet set = new SortSet();set.ad

10、d(x)泛型通配符T 是类型参数,指定元素的数据类型,T的实际参数类型是类,在声明和创建对象时指定。 “?” 是泛型通配符, “?extends T” 是指T及其任意一个子类。 “? super T” 是指T及其任意一个父类。2021泛型中占位符 T和 ?有什么区别?/woshizisezise/article/details/7937446022public class Teacher public String str; public int age; public int sex; public Teacher(String str, int age,int sex) this.str

11、= str; this.age = age; this.sex = sex; public class Student extends Teacher public Student(String str, int age,int sex) super(str,age,sex); public class Child extends Student public Child(String str, int age,int sex) super(str,age,sex); TeacherStudentChild23public static void test() ArrayList list1

12、= new ArrayList(); list1.add(new Student(zhangsan,18,0); list1.add(new Student(lisi,28,0); list1.add(new Student(wangwu,24,1); /这里如果add(new Teacher(.);就会报错, show1(list1); /这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 public static void show1(List list) for (Object object : list) System.out.println(object.toSt

13、ring(); 24public static void test2()/这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 ArrayList list2 = new ArrayList(); list2.add(new Student(zhaoliu,22,1); list2.add(new Teacher(sunba,30,0); show2(list2); public static void show2(List list) for (Object object : list) System.out.println(object); 25public static

14、void test3() ArrayList list3 = new ArrayList(); list3.add(new Teacher(zhaoliu,22,1); list3.add(new Teacher(sunba,30,0); show3(list3); /这里我们并没有给List指定具体的数据类型, /可以存放多种类型数据 public static void show3(List list) for (Object object : list) System.out.println(object); 26public static void test3() /这里我们并没有给L

15、ist指定具体的数据类型, /可以存放多种类型数据 ArrayList list4 = new ArrayList(); list4.add(new Student(sunba,30,0); list4.add(new Teacher(zhaoliu,22,1); show4(list4); public static void show4(List list) for (Object object : list) System.out.println(object); 27public static void test3() ArrayList list5 = new ArrayList(); list5.add(new Child(zhangsan, 15,1); list5.add(new Child(sunba,30,0); list5.add(new Child(zhaoliu,22,1); show3(list5); ArrayList list6 = new ArrayList(); list6.add(new Child(zhangsan,15,1); list6.add(new Stude

温馨提示

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

评论

0/150

提交评论