- 1、本文档共100页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
;一、应用场景
二、Java泛型的概念
三、泛型类的定义和使用
四、泛型方法的定义和使用
五、泛型接口的定义和使用;3;泛型的应用场景:
不想写多个重载函数的场景。
约束对象类型的场景,可以定义边界(Textends...),如JDK集合List,Set。
用户希望返回自定义类型的返回值场景,如Json返回Javabean。
在用反射的应用中,也经常会用到泛型,如ClassT。
对网页,对资源的分析,返回场景,一般都有泛型。
其实泛型的应用还是很广的,一句话就是希望将数据类型参数化的地方,就可以用它。;二、Java泛型的概念;publicclassGenericsClassNameT,SextendsT{
....
};可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。;Java泛型的作用
1.泛化
可以用T代表任意类型。Java语言支持泛型,许多重要的类,比如集合框架,都已经泛型化了。
2.类型安全
泛型的一个主要目标就是提高Java程序的类型安全,使用泛型可以使编译器知道变量的类型限制,进而可以在更高程度上验证类型假设。如果不用泛型,则必须使用强制类型转换。
;3.消除强制类型转换
泛型可以消除源代码中的许多强制类型转换,这样可以使代码更加可读,并减少出错的机会。
4.向后兼容
支持泛型的Java编译器(例如JDK1.5中的Javac)可以用来编译经过泛型扩充的Java程序(GenericsJava程序);三、泛型类的定义和使用;;publicclassBoxT{
publicbooleanadd(Tt){
}
publicStringget(intindex){
}
publicTTshow(){
}
};2.泛型类的使用;四、泛型方法的定义和使用;定义语法格式:;定义泛型方法时,必须在返回值前边加一个T,来声明这是一个泛型方法,持有一个泛型T。;在调用方法的时候确定泛型类型的参数值。例如:
BoxStringbox=newBox();
box.add(“Jacket”);
box.add(“shoes”);;说明几点
(1)使用泛型方法时,返回值或参数是泛型定义的,应该保持一致。
(2)如果定义类、接口时没有使用类型形参,但定义方法时可以定义类型形参。
(3)泛型方法中的类型形参声明以尖括号括起来,放在方法修饰符???方法返回值类型之间。
(4)泛型方法中的泛型参数无需显式传入实际类型参数。;五、泛型接口的定义和使用;这是一个实例代码
publicinterfaceGenericInterfaceT{
publicTTprint(Tt);
}
GenericInterface为泛型接口,T为参数化类型。
其中的泛型方法的定义参考《泛型方法的定义和使用》;2.泛型接口的使用;第二种使用方式。实现类也是泛型类。有些时候在定义一个类去实现泛型接口时,并不确定这个类将要实现哪种类型的类,接口中的泛型尚未确认,这时就要求这个实现类也必须定义为泛型类,而且泛型名称要一致。;接口类:GenericInterface.class;实现接口的类:GenericClass.class;创建类对象;泛型使用时的注意事项;④使用泛型时,泛型类型必须为引用数据类型,不能为基本数据类型。
⑤泛型类不可以继承Exception类,即泛型类不可以作为异常被抛出。
⑥不可以定义泛型数组。
⑦泛型类不可以继承Exception类,即泛型类不可以作为异常被抛出。;;小结;;一、任务描述
二、任务分析、设计
三、任务实施
四、运行结果;34;二、任务分析、设计;其类图如图4-1所示。;三、任务实施;其中声明泛型方法compare以实现对两个Pair对象的比较,返回值为布尔类型。在访问修饰符和返回值类型之间使用泛型K,V参数;第三步定义类PairUtil,实现泛型接口;第四步,编写测试类;首先创建两个PairString,String的对象p1和p2,然后使用new通过泛型接口的实现类创建utilBase对象,再通过该对象调用比较方法compare()进行比较p1和p2。;PairString,Integerp3=newPairString,Integer(age,67);
PairString,Integerp4=newPairString,Integer(age,67);
System.out.println(比较结果:p3=p4\t+utilBpare(p3,p4));;再创建两个PairString,String的对象p3和
您可能关注的文档
- 《C语言程序设计》课件——4.5实例讲解.pptx
- 《C语言程序设计》课件——7.3函数的返回值.pptx
- 《AUTOCAD》课件——项目二 平面图形基础.pptx
- 《C语言程序设计》课件——1.1C语言概述.pptx
- 《C语言程序设计》课件——1.2C程序基本结构.pptx
- 《C语言程序设计》课件——4.1算法及其表示.pptx
- 《C语言程序设计》课件——9.13用指针变量名加下标的形式访问数组.pptx
- 《C语言程序设计》课件——10.6共生体类型数据.pptx
- 《H5页面与交互动画设计》课件——H5页面的交互设计.pptx
- 《H5页面与交互动画设计》课件——H5中的动效、动画 .pptx
- 《Java高级程序设计》课件——学习情境5 Java序列化机制.pptx
- 《Java高级程序设计》课件——学习情境6 Java多线程与同步机制.pptx
- 《Java高级程序设计》课件——学习情境7 Java编程.pptx
- 《LED封装应用技术》课件——二合一编带机简介.pptx
- 《LED封装应用技术》课件——发展简史.pptx
- 《LED封装应用技术》课件——固晶机各组件的保养和注意事项.pptx
- 《商务英语口语》课件——Kung Pao Chicken.pptx
- 《商务英语口语》课件——Lateral and Semi-Vowels 舌边音和半元音.pptx
- 《Python程序设计》——第一章习题.docx
- 《WEB前端开发技术》课件——动画效果.pptx
文档评论(0)