Java高级-第1章泛型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JAVAJava高级Java高级Java课程组本课程所包括的主要内容泛型1集合框架3实用类4Net包5Enum枚举2本课程所包括的主要内容JDBC6Swing8JavaBean7课程重难点第6章JDBC第7章JavaBean第8章SwingJava高级课程衔接前序课程:C语言程序设计、数据库基础、SQLServer、Java程序设计、计算机网络基础相关课程:软件工程、软件测试后续课程:JavaWeb、项目实战、毕业设计推荐参考书籍:Java2核心技术卷1:基础知识Java2核心技术卷2:高级特性机械工业出版社ISBN:7-111-18089-5¥118.0088.00Web应用程序设计-Java方向综合训练教程厦门理工学院软件人才培养基地高等教育出版社ISBN:978-7-04-022710-9¥34.90(含光盘)12推荐参考书籍:ThinkinginJava/Java编程思想侯捷/陈昊鹏Tomcat与JavaWeb开发技术详解孙卫琴电子工业出版社ISBN:7-505-39392-8¥45.0034推荐网络学习资源天下社区开发网技术网章:泛型Java2核心技术Java课程组课程目标和课时安排课程目标理解泛型的作用掌握泛型类和泛型接口的使用掌握通配符的使用掌握泛型方法的定义课时安排4学时第1章泛型泛型的概念1泛型的应用2泛型类的定义3其他说明41.什么是泛型?什么是“泛”?泛型(Generics):提供类型的“类型参数”,也称为参数化类型(parammeterizedtype)或参量多态(parametricpolymorphism)。实例化泛型:用具体的类型替换类型变量。2.什么时候使用泛型?项目:FanXingOneJava5.0以后的解决方案NoFanXingOneJava5.0以前的解决方案请比较两种解决方案的特点思考提问使用了泛型和未使用泛型的程序的主要区别在哪里?10分钟类型转换的问题简单类型booleanbytecharshortintlongfloatdouble二进制位数18161632643264封装类BooleanByteCharacterShortIntegerLongFloatDouble类型转换的问题简单数据类型之间的转换:自动转换、强制转换自动转换:从“小”到“大”的转换,(byte,short,char)-int-long-float-double,括号内平级数据需强制转换强制转换:从“大”到“小”的转换,会损失精度使用泛型的优势:没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。Java5.0以前的解决方案需求:我们在程序运行过程中要存储一组对象,但对象的数量、类型都未定。项目:GenericTestcn.kfu.generic包下的ObjectGroup.javacn.kfu.genericLearn.test包下的ObjectTest.javaJava5.0以前的解决方案练习:15分钟利用泛型改造这两个程序Java5.0以后的解决方案项目:GenericTestcn.kfu.generic包下的GenericGroupcn.kfu.genericLearn.test包下的GenericTestJava5.0以后的解决方案3.如何定义泛型类?publicclassGenericGroupE{}一般类型参数习惯使用单个大写字母表示类型参数之间存在继承关系,但对应泛型类对象没有继承关系。GenericGroupIntegergroup1=newGenericGroupInteger();GenericGroupObjectx=newGenericGroupObject();x=group1;参见Test.javaError!泛型的几种类型变量类型变量用括起来,且比较短,使用大写形式。Java库中,使用变量E表示集合的元素类型K和V表示表的关键字与值的类型T表示任意类型,或者用U/S泛型使用的规则和限制泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。泛型的类型参数可以有多个。泛型的参数类型可以使用extends语句,例如Textendssuperclass。习惯上成为“有界类型”泛型的参数类型还可以是通配符类型。例如Class?classType=Class.forName(java.lang.String);5.其他说明:使用泛型类有哪些限制?类型参数不能实例化:Tt=newT();不能实例化类型参数的数组:T[]ts=newT[10];类的静态变量不能声明为类型参数类型:staticTt;泛型类不能继承自Throwable以及其子类。4.其他说明:接口是否可以使用泛型?publicinterfaceCompareA{}publicclassPersonimplementsComparePerson{}泛型接口实例cn.kfu.generic包下的Compare.java泛型接口cn.kfu.generic包下的Person.java泛型接口的实现类Cn.kfu.genericLearn.test包下的GenericInterTest.java泛型接口测试类练习:阅读程序并回答结果为什么为“14”?5分钟(注意解释泛型在该实例中如何使用的)4.其他说明:类型参数是否可以有多个?publicclassGenMapK,V{}publicabstractclassBaseDAOK,E{}publicclassGenMapT,V{publicvoidset(Tt){}publicvoidset(Vv){}}产生二义性错误4.其他说明:受限泛型publicclassLimitedTextendsNumber{}5.其他说明:通配符上限通配符GenericGroup?extendsNumber下限通配符。GenericGroup?superNumber4.其他说明:泛型方法泛型方法:类型参数不仅可以用来声明泛型类或者泛型接口,也可以用来声明泛型方法,被用泛型描述参数或者返回值的方法称为泛型方法。泛型方法基本指导原则:泛型方法可以用在非泛型类中如果使用泛型方法可以取代将整个类泛型化,那么就应该只使用泛型方法,对于一个static的方法而言,无法访问泛型类的类型参数,所以,如果static方法需要使用泛型能力,就必须使其成为泛型方法。泛型方法实例cn.kfu.generic包下的GenericGroups.java泛型方法实例cn.kfu.generic包下的GenericGroupsTest.java泛型方法的测试格式:publicTvoidf(Tx){}JAVA

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功