- 1、本文档共50页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第8章泛型与集合1.1泛型介绍
泛型:什么是泛型Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
泛型类泛型类就是把泛型定义在类上。定义格式:定义泛型类,在类名后添加一对尖括号,并在尖括号中填写类型参数,参数可以有多个,多个参数使用逗号分隔。publicclass类名T,...{}
泛型类例如:示例中,定义了3个泛型参数(ab,a,c),当然,这个后面的参数类型也是有规范的,不能像上面一样随意,通常类型参数我们都使用大写的单个字母表示:publicclassGenericClassab,a,c{}T:任意类型typeE:集合中元素的类型elementK:key-value形式keyV:key-value形式value
泛型类使用泛型类:1.泛型类型必须是引用类型(非基本数据类型),后面课程会详细介绍。2.使用泛型的时候,前后定义的泛型类型必须保持一致,否则会出现编译异常类名称数据类型对象名称=new类名称数据类型();
泛型类练习:编写数组帮助类,实现动态数组功能(追加元素、获取长度、根据索引获取元素等)
泛型类练习:编写数组帮助类,实现动态数组功能(追加元素、获取长度、根据索引获取元素等)
泛型方法泛型方法,是在调用方法的时候指明泛型的具体类型。定义格式:与泛型类类似,只是方法声明中定义的形参只能在该方法里使用,而接口、类声明中定义的类型形参则可以在整个接口、类中使用。若类和方法使用同一个标记符,则方法的标记符会覆盖类的标记符。修饰符代表泛型的变量返回值类型方法名(参数){//方法体}
泛型方法使用泛型方法:在调用泛型方法的时候,可以指定泛型,也可以不指定泛型。在不指定泛型的情况下,泛型变量的类型为该方法中的几种类型的同一个父类的最小级,直到Object。在指定泛型的时候,该方法中的几种类型必须是该泛型实例类型或者其子类。定义格式://调用格式指定的类型泛型方法(实参列表);
泛型方法练习:编写泛型方法,实现打印数组元素值
泛型方法练习:编写泛型方法,实现打印数组元素值测试程序
第8章泛型与集合1.2包装类
为什么使用泛型泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。保证了类型的安全性。消除强制转换。避免了不必要的装箱、拆箱操作,提高程序的性能。提高了代码的重用性
使用泛型的约束和限制1.不能使用基本数据类型实例化类型参数。Java泛型中的类型参数不能是基本类型,只能是类或接口类型。例如,以下代码在编译阶段会出错,无法通过编译:正确的写法是使用基本类型对应的包装类型,如下所示:Listlongarrs=newArrayListlong();ListLongarrs=newArrayListLong();
使用泛型的约束和限制2.无法在运行时获取泛型类型信息。由于泛型擦除的存在,导致我们在程序运行时无法获取泛型类型的信息。例如,以下代码在运行时就无法获取List的元素类型:所谓的泛型擦除(TypeErasure),就是指在编译时,JVM编译器会将所有的泛型信息都擦除掉,变成原始类型,一般是将泛型的类型参数替换成具体类型的上限或下限(如果没有指定上界,则默认为Object)。ListStringarrs=newArrayListString();System.out.println(arrs.getClass()); //输出的是classjava.util.ArrayList
使用泛型的约束和限制3.不能创建参数化类型的数组(泛型数组)。例如,以下代码是错误的写法:MyPrintStringpairs[]=newMyPrintString[10];//错误4.不能实例化类型变量T。不能使用像newT(...)、newT[...]或者T.class这样的表达式。例如,下面T的构造方法是非法:Tt=newT();//错误
使用泛型的约束和限制5.泛型类的静态上下文中类型变量无效。静态变量不能定义泛型类型,静态方法的返回类型不能定义为泛型类型。例如,下面的写法是错误的:publicclassIntervalT{privatestaticTsingleInstance; //错误,静态变量的类型不能为泛型类型publicstaticTgetS
您可能关注的文档
- 《跨平台程序设计语言》课件——第 3 章 类和对象.pptx
- 《跨平台程序设计语言》课件——第 4 章 类的封装性、继承性、多态性及接口.pptx
- 《跨平台程序设计语言》课件——第1章 Java语言概述.pptx
- 《跨平台程序设计语言》课件——第2章 Java 基础语法.pptx
- 《跨平台程序设计语言》课件——第5章 数组、字符串和枚举.pptx
- 《跨平台程序设计语言》课件——第6章 Java常用类及接口.pptx
- 《跨平台程序设计语言》课件——第7章 异常处理.pptx
- 《跨平台程序设计语言》课件——第10章 多线程.pptx
- 《跨平台程序设计语言》课件——第九章 流和文件.pptx
- 《人工智能应用开发》课件——第1章课程介绍+绪论.pptx
- 2024-2025学年度怀化职业技术学院《形势与政策》期末考试检测卷及答案详解(典优).docx
- DB42T 1122-2015 绿色食品 杏鲍菇生产技术规程.docx
- DB42T 1073-2015 地理标志产品 神农百花蜜.docx
- DB42T 1024-2014 牛支原体肺炎诊断技术规程.docx
- DB42T 473-2021 早熟桃生产技术规程.docx
- DB42T 353-2011 地理标志产品 九资河茯苓.docx
- DB42T 350-2011 地理标志产品 来凤漆筷.docx
- DB42T 349.8-2015 武汉市主要行业取(用)水定额 第8部分:饮料制造.docx
- DB42T 1081-2015 湖北省土地整治工程量清单计价规范.docx
- DB42T 1010-2014 地理标志产品 老君眉茶.docx
最近下载
- 大学语文期末复习.pdf VIP
- 凉山州冕宁县冕宁县引进人才考试真题2024.docx VIP
- 医院腹部损伤患者护理常规.docx VIP
- T∕CACM 012-2017 中医药单用联合抗生素治疗常见感染性疾病临床实践指南 脓毒症.docx VIP
- CNAS-GL038:2019《临床免疫学定性方法的性能验证指南》--冯珍如.pdf VIP
- 《急性阑尾炎的护理》课件.ppt VIP
- powmax国迈变频器POWSD-E3 交流伺服驱动器随机手册V17.pdf VIP
- 海量数据离线备份方案.docx VIP
- 人教版初中数学九年级下册全册教案(2024年春季修订).pdf VIP
- 饲料中总磷含量测定课件(共22张PPT)《动物营养与饲料》同步教学(中国农业出版社).pptx VIP
文档评论(0)