1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
泛型(时间:1次课,1学时)第8章 泛型8.1 泛型概述8.2 泛型类和接口的定义及使用8.3 有界类型参数8.4 泛型方法8.5 类型参数的通配符8.6 擦除8.7 泛型的局限8.1 泛型概述class MyList{ public void add(Object obj){ …} public Object get(int index){ …} public int size(){ …}}public class MyListTest{ public static void main(String[] args){ MyList list = new MyList(); list.add(123abc); list.add(new Date()); list.add(new Random()); }}问题:编写一个简易的对象容器类,它可以存放任意数量对象?请注意潜在问题使用泛型改写容器类class MyGenericListE{ public void add(E ele){ …} public E get(int index){ …} public int size(){ …}}public class MyGenericListTest{ public static void main(String[] args){ MyGenericListString list = new MyGenericListString(); list.add(123abc); list.add(new Date()); //编译报错 list.add(new Random()); //编译报错 }}只能往这个容器中放置定义时指定类型的对象了,取出容器中的对象时也无须进行强制类型转换了。这样就使得这个容器类具有了更高的通用性。8.1.1 泛型定义泛型:就是在定义类、接口、方法、方法参数或成员变量时,指定它的操作对象的数据类型为一个参数。在具体使用类、接口、方法、方法参数或成员变量时,将这个参数用具体的某一数据类型来代替。泛型的好处:它在编译时进行类型安全检查,并且在运行时所有的转换都是强制的、隐式的。提高了代码的重用率。8.2.1 泛型类和接口的定义定义语法class 类名类型参数的名称 { …}interface 接口名类型参数的名称 { …}说明:类型参数的名称建议使用单个大写字母。如常用的名有:E:表示集合中的元素类型。K:表示“键值对”中的键的类型。V:表示“键值对”中的值的类型。T:表示其它所有的类型。8.2.2 从泛型类派生子类class SuperClassT{ private T o; public SuperClass(T o){this.o = o; } public String toString(){return T: + o;}}/** 泛型类的继承 */class SubClass T extends SuperClassT{ public SubClass(T o){ super(o);}}class SpecialSubClass extends SuperClassString{ public SpecialSubClass(String o){ super(o); }}当某个类的父类是泛型类时:这个子类要把类型参数传递给父类;也可以把子类定义成特定于指定类型的,这个子类就不再是泛型类了。8.2.3 实现泛型接口interface MyGenericTypeInterfaceT{ }class MyImplementT implements MyGenericTypeInterfaceT{}class IntegerImplement implements MyGenericTypeInterfaceInteger{ }具体子类要把类型参数传递给所实现的接口;也可以把具体子类定义成特定于指定类型的。8.3 有界类型参数class StatisticsT extends Number { private T[] arrs; public Statistics(T[] arrs) { this.arrs = arrs; } public double count() { //计算数组中元素数值的总和 double sum = 0.0; for (int i = 0; i arrs.length; ++i) { sum += arrs[i].doubleValue(); } return sum; }}有界类型参数可以为泛型的类型参数指定一个上界8.4 泛型方法public static T extends Number void m

文档评论(0)

5500046 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档