




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
泛型擦除反射机制java泛类型相关知识1 为什么使用泛型解决元素存储时候的安全性问题,同时解决获取集合元素的时候类型强转的问题。提高代码的重用率。例如编写一个泛型类,而我们不去关心类的具体类型,而用T来代表其变化的类型。(如果任何类型的数据都可以添加到集合中,造成集合类型不安全,另外读取出来的对象可能需要转换,使用繁琐,容易出现,ClassCastException .(类转换异常)如下代码:ArrayList a1 = new ArrayList();a1.add(dog);a1.add(cat);Dog temp = a1.get(0);System.out.println(a1.get(0);Dog temp = (Dog) a1.get(0);/dog是Dog类的一个实例首先定义了一个ArrayList 类型的集合,然后往集合里面添加了Dog类型的对象以及Cat类型的对象,这里是完全允许的,因为所有的类型集合都默认为Object类,在javac阶段也没有问题,但是在java阶段(运行阶段)就会出现类型转换的异常,ClassCastException。 分析:1.当我们将一个对象放入集合的时候,集合不会记住对象的类型,当再次从集合中取出对象的时候,该对象的编译类型为Object类型,而运行时类型任何为其本身的类型。2.若想使用该对象,必须要做强制转换。【摘自某博客】【泛型,JDK1.5新加入的,解决数据类型的安全性问题,其主要原理是在类声明时通过一个标识表示 类中某个属性的类型 或者是 某个方法的返回值 及参数类型。这样在类声明或实例化时只要指定好需要的具体的类型即可。】【安全隐患的理解】:在java1.5之前,没有泛型的情况下,通过对 类型Object 的引用来实现参数的“任意化”,任意化带来的确定就是要做显示的强制类型转换,而且要求开发者必须对实际参数类型预知的情况下进行,而且对于强制类型转换错误的情况下,javac不会显示错误,在运行的时候才会异常,导致jvm崩溃。这是一个安全的隐患。参考代码TestGenerics.java泛型类的声明:class/interface name ,为了区别普通类,这样声明的类叫做泛型类。class Chorus 其中,Chorus 叫做泛型类。E 和T 是 类的泛型。我们并没有指定 E和T是任何对象的类或者接口,但不能是基本数据类型,可以使用其封装类代表基本数据类型。使用任何一个合理的标识符都可以表示泛型,但最好和我们熟悉的类型名称有所区别,泛型类声明的时候,给出的泛型 可以作为 类的成员变量的类型,方法的返回值类型,以及局部变量的类型。【这里所说的方法的类型就是指方法返回值的类型】。泛型类声明对象使用泛型类声明对象即分配内存空间也是使用new 关键字,另外必须要指定类中使用的泛型的具体实际类型。Chorus model;model = new Chorus ;泛型的几个重要使用1,集合中使用泛型2,自定义泛型3,泛型方法4,泛型接口泛型注意的问题:1,对象实例化的时候不指定泛型,对象默认为Object类型2,泛型不同的引用不能相互赋值3,加入集合的对象必须与指定的泛型一致。4,如果在泛型类的方法中使用了类的泛型,那么这些方法不能申明为静态方法。 (泛型是类在实例化对象的时候才确定其参数是何种类型,而静态方法可以在类加载的过程中使用,而此时还没有实例化对象。)5,若泛型类是接口或者抽象类,则其不能实例化对象6,不能再catch语句中使用泛型7,从泛型类派生子类,泛型类型需要具体化。8,可以在继承泛型类的时候,指明泛型。泛型方法:方法泛型化不用考虑其所在的类是否是泛型类,方法的泛型是在其调用的时候确定的,泛型方法可以声明为静态的。格式:访问权限 返回类型 方法名( 泛型标识 参数名称 )异常/当通过对象调泛型方法时,指明泛型方法的类型。public List fromArrayToList(E e,List list)for(E xx : e)list.add(xx);return list;/List list3 = order.fromArrayToList(in, list2);泛型与继承:若类B是类A的子类,那么List和 List没有继承关系。若想在泛型中使用继承,那么可以使用通配符?List 和List都是List的子类List可以存放类A及其子类的List 可以存放类A及其父类使用通配符的集合:List list :可以从使用通配符的集合list中获取数据,其元素类型为Object。不可以往通配符的集合中list添加数据除了null之外。泛型擦除我们发现,在使用泛型类时,虽然传入了不同的泛型实参,但并没有真正意义上生成不同的类型,传入不同泛型实参的泛型类在内存上只有一个,即还是原来的最基本的类型(new 出来的对象是何种类型,那么它在内存上就是什么类型),当然,在逻辑上我们可以理解成多个不同的泛型类型。究其原因,在于Java中的泛型这一概念提出的目的,导致其只是作用于代码编译阶段,在编译过程中,对于正确检验
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质检技术在农村发展中的应用考核试卷
- 装饰材料企业生产流程优化考核试卷
- 自行车出行数据监测考核试卷
- 连续搬运设备故障预测技术研究现状与发展趋势预测考核试卷
- 口腔科用牙科D打印设备考核试卷
- 葡萄栽培的农业环境保护与绿色种植考核试卷
- 稀有金属加工中的企业文化与核心竞争力培育考核试卷
- 跨界艺术合作的模式与案例分析考核试卷
- 通信设备行业绿色生产与环保认证考核试卷
- 填充手术疤痕护理常规
- 脂肪肝介绍课件
- 2024年市场营销师品牌宣传技巧试题及答案
- 应急物资、设备检查维护保养制度
- 《数据网组建与维护》课件-8.1任务1 WLAN基本配置
- 2025解题觉醒邓诚数学(名师大招册)
- 第四单元第一课 多姿多彩的乐音世界-《唱脸谱》 课件 2024-2025学年湘艺版(2024)初中音乐七年级下册
- 给小朋友科普化学小知识
- 中医专科护士进修汇报
- 9.2 法律保障生活课件(共13张)-2024-2025学年统编版道德与法治七年级下册
- 北非旅游地理
- 体重管理培训课件
评论
0/150
提交评论