码迷,mamicode.com
首页 > 编程语言 > 详细

java基础---泛型

时间:2018-08-02 22:51:14      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:href   ref   工作   http   tcl   字节   基础   换工作   ===   

泛型设计的初衷就是为了减少手动的类型转换工作

===为什么需要泛型?没有泛型之前通用程序是如何设计的呢?
泛型的目的就是减少强制类型转换出现的错误。
如果没有泛型,比如一个集合就存法了两种元素Integer整数类型和字符串类型String类型。因为所有对象都是Object类的子类,这个时候你取出一个元素,你以为他是整数类型你强制类型转换,但是他是字符串类型这个时候就会抛异常ClassCast类型转换异常。而且这种异常是运行时异常还不是编译时异常,所以是我们不愿意看到的。
所以引入泛型,由编译器在编译时期进行强制类型转换,避免我们手动类型转换可能出现的错误,比如刚刚的集合如果泛型是整数类型,添加string类型的话编译的时候就会出错。
 
 
 
===泛型是什么时候开始工作的?解释一下java泛型擦除
编译的时候进行工作,编译的时候看到类型参数进行泛型擦除,插入强制类型转换的指令。
定义两个ArrayList<String>和ArrayList<Integer>类型的集合arrayString和arrayInteger,当比较两个集合的类型的时候会发现类型是一样的。
arrayString.getClass()==arrayInteger.getClass()
在编译期的时候会发生类型擦除,都会变成ArrayList类型。原始类型就是在类型擦除之后在字节码中真正的类型。
 
 
 

java基础---泛型

标签:href   ref   工作   http   tcl   字节   基础   换工作   ===   

原文地址:https://www.cnblogs.com/buptyuhanwen/p/9409673.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!