- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java泛型详解(超详细的 java泛型⽅法解析)
⽬录
2. 什么是泛型
3. 使⽤泛型的好处
4. 泛型的使⽤
4.1 泛型类
4.2 泛型⽅法
4.3 泛型接⼝
5. 泛型通配符
5.1 通配符基本使⽤
5.2 通配符⾼级使⽤
6. 总结
1.为什么使⽤泛型
早期的Object类型可以接收任意的对象类型,但是在实际的使⽤中,会有类型转换的问题。也就存在这隐患,所以
Java提供了泛型来解决这个安全问题。
来看⼀个经典案例:
public static void main(String[] args) {
// 测试⼀下泛型的经典案例
ArrayList arrayList = new ArrayList();
arrayList.add(helloWorld);
arrayList.add(taiziyenezha);
arrayList.add(88);// 由于集合没有做任何限定,任何类型都可以给其中存放
for (int i = 0; i arrayList.size(); i++) {
// 需求:打印每个字符串的长度,就要把对象转成Strin 类型
String str = (String) arrayList.get(i);
System.out.println(str.length());
}
}
运⾏这段代码,程序在运⾏时发⽣了异常:
Exception in thread main java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Strin
发⽣了数据类型转换异常,这是为什么?
由于ArrayList 可以存放任意类型的元素。例⼦中添加了⼀个Strin 类型,添加了⼀个Integer类型,再使⽤时都以Strin 的⽅式使
⽤,导致取出时强制转换为Strin 类型后,引发了ClassCastException ,因此程序崩溃了。
这显然不是我们所期望的,如果程序有潜在的错误,我们更期望在编译时被告知错误,⽽不是在运⾏时报异常。⽽为了解决类似这
样的问题(在编译阶段就可以解决),在jdk1.5后,泛型应运⽽⽣。让你在设计API时可以指定类或⽅法⽀持泛型,这样我们
使⽤API的时候也变得更为简洁,并得到了编译时期的语法检查。
我们将第⼀⾏声明初始化ArrayList的代码更改⼀下,编译器就会在编译阶段就能够帮我们发现类似这样的问题。现在再看看效
果。
ArrayListString arrayList = new ArrayList();
arrayList.add(helloWorld);
arrayList.add(taiziyenezha);
arrayList.add(88);// 在编译阶段,编译器就会报错
这样可以避免了我们类型强转时出现异常。
2.什么是泛型
泛型:是⼀种把明确类型的⼯作推迟到创建对象或者调⽤⽅法的时候才去明确的特殊的类型。也就是说在泛型使⽤过程中,操
作的数据类型被指定为⼀个参数,⽽这种参数类型可以⽤在类、⽅法和接⼝中,分别被称为 、 、 。
泛型类 泛型⽅法 泛型接⼝
注意:⼀般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。
3.使⽤泛型的好处
避免了类型强转的⿇烦。
它提供了编译期的类型安全,确保在泛型类型(通常为泛型集合)上只能使⽤正确类型的对象,避免了在运⾏时出现
ClassCastException 。
4.泛型的使⽤
泛型虽然通常会被⼤量的使⽤在集合当中,但是我们也
您可能关注的文档
- CCNA认证试题(中文+答案).pdf
- C程序设计题100题目.pdf
- C语言必背100代码,C语言必会100代码大全.pdf
- C语言编程期末复习(填空).pdf
- C语言-基本选择题及参考答案.pdf
- C语言基础笔试题.pdf
- 1+X初级 网店运营基础 单选题库二(109题).pdf
- c语言经典笔试题(非常全).pdf
- C语言经典编程实例.pdf
- c语言竞赛题集.pdf
- 山东省菏泽市牡丹区第二十二初级中学2025年初三第一次月考生物试题试卷含解析.doc
- 2025年广东省梅州市重点名校初三阶段性测试(二模)生物试题文试题含解析.doc
- 辽宁省辽阳市重点达标名校2024-2025学年初三5月阶段性检测试题(三模)生物试题含解析.doc
- 江苏省南通市八校联考2025届中考最后一次冲刺模拟考试生物试题含解析.doc
- 福建省建宁县重点名校2025届初三第三次联合模拟生物试题含解析.doc
- 江苏省盐城市龙冈共同体2025届9月初三生物试题返校考含解析.doc
- 广东省广州市东环中学2025届初三下学期入学生物试题含解析.doc
- 2025年广西河池市天峨县初三二诊模拟试题(二)生物试题试卷含解析.doc
- 上海市长宁、金山区重点名校2025年初三3月起点调研考试-生物试题含解析.doc
- 2025年江苏南京建邺区五校联考初三年级第一次教学质量诊断性联合考试生物试题含解析.doc
文档评论(0)