《跨平台程序设计语言》课件——第8章 泛型与集合.pptx

《跨平台程序设计语言》课件——第8章 泛型与集合.pptx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第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

您可能关注的文档

文档评论(0)

青柠职教 + 关注
实名认证
服务提供商

从业10年,专注职业教育专业建设,实训室建设等。

1亿VIP精品文档

相关文档