- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十二章 泛型 学习目标 了解泛型相关的概念。 能够创建带有泛型的类和方法。 能够熟练使用通配符和受限泛型。 了解泛型在使用过程中的限制。 泛型概述 泛型本质上就是为类提供类型参数,它们也被称为参数化类型(parameterized type)或参量多态(parametric polymorphism)。 泛型的一个主要目标就是提高 Java 程序的类型安全。 泛型类 例如: public class GenericGroupE{ } 上面的代码,除了尖括号中的部分,其余与原先定义类时完全一致。而尖括号中的内容就代表GenericGroup类的“形式类型参数”的声明,这种类型参数在整个类的声明中可用,几乎是所有可使用其他普通类型的地方,这个GenericGroup就是泛型类。 泛型类的使用 - 1 定义类时的类型参数与在定义方法或构造函数中普通的参数一样。就像一个方法有“形式参数”来描述它操作的参数的种类一样,一个泛型声明也有“形式类型参数”。当一个方法被调用,“实参”替换“形参”,方法体被执行。当一个泛型声明被调用,“实际类型参数”取代“形式类型参数”。 泛型类的使用 - 2 一个命名的习惯:推荐用简练的名字作为形式类型参数的名字。最好避免小写字母,这使它和其他的普通的形式参数很容易被区分开来。许多容器类型使用E作为其中元素的类型,如果使用泛型,只要代码在编译时没有出现警告,就不会在运行时遇到ClassCastException。 泛型类的局限 1、类型参数不能实例化。 2、不能实例化类型参数的数组。 3、类的静态变量不能声明为类型参数类型。 4、泛型类不能继承自Throwable以及其子类。 泛型与继承 例如: GenericGroupInteger group1 = new GenericGroupInteger(); GenericGroupObject x = new GenericGroupObject(); x = group1; 上面的代码会产生编译错误,因为x中可以存放任意Object,所以这个引用不可以指定只能存放Integer的group1。 泛型接口 在JDK 5.0中, 不仅仅可以声明泛型类, 也可以声明泛型接口, 声明泛型接口和声明泛型类的语法类似, 也是在接口名称后面加上。 例如:定义一个带泛型的接口,可以对同类型的对象进行大小关系的比较。 public interface CompareA{ public abstract int compare(A a); } 受限泛型 受限泛型是指类型参数的取值范围是受到限制的。extends关键字不仅仅可以用来声明类的继承关系, 也可以用来声明类型参数(type parameter)的受限关系。 例如: public class LimitedT extends Number { } 通配符 上限通配符 GenericGroup? extends Number 下限通配符 GenericGroup? super Number 无界通配符 GenericGroup? 泛型方法 - 1 类型参数(type parameter)不仅仅可以用来声明泛型类或者泛型接口, 也可以用来声明泛型方法, 而且这种声明的泛型方法可以用在非泛型类中。 泛型方法允许类型参数被用来表示方法的一个或多个参数之间的依赖关系,或者参数与其返回值的依赖关系。如果没有这样的依赖关系,不应该使用泛型方法。 泛型方法 - 2 例如:我们定义一个GenericGroups类,里面定义一个静态方法,返回一个GenericGroup集合中的最大值。 public class GenericGroups{ public staticA extends Compare? super A A max(GenericGroupA group){
您可能关注的文档
最近下载
- 大学体验英语综合教程4unit5.pptx VIP
- 2026年山西通用航空职业技术学院单招职业技能考试题库完美版.docx VIP
- 清洁生产 教学课件 作者 曲向荣清洁生指标体系第7章.PPT VIP
- 养牛项目环评报告书.pdf VIP
- 2025-2030中国射击场行业市场发展趋势与前景展望战略研究报告.docx
- 2025年山西通用航空职业技术学院单招职业技能考试题库最新.docx VIP
- 在线网课学习课堂《健康管理科研思维训练(杭州师大 )》单元测试考核答案.pdf VIP
- 供应链垫资代采业务流程指导书.pdf VIP
- 临床免疫学检验期末考试试题-临床免疫学检验练习题.docx VIP
- 清洁生产 教学课件 作者 曲向荣生产过程的清洁生产第9章.ppt VIP
原创力文档


文档评论(0)