一、泛型的概念
如果要求在一个类中定义一个保存年龄的属性,这个属性定义为int还可以定义
字符串类型:
●private int age; .
●private String age;
此时可以使用什么类型能表示这两种类型呢?首先想到的是Object类,该类是所有类型的父类,那么就可以使用该类型表示这个年龄的属性,因为子类类型可以向上转型为Object。
Object是Java提供的一个最大父类,Java提供的所有其他引用类型的类都继承这个类,比如说String 类。
DEMO:使用Obejct作为age的类型
以上的代码可以实现一个类型(Object) 能表示其他类型,还能表示字符串。
DEMO:把年龄设置为字符串
使用Object可以实现需求,但是这个过程涉及到了向下转型,向下转型存在类型转换异常的风险(而且这个类型转换异常要运行时候才会出现)。如果保存的时候是字符串类型的数据,获取的时候转成int就出现了类型转换异常。
DEMO:观察风险
程序出现了类型转换异常,那么原因是Object类型的范围太大了,所以向下转型存在风险,此时泛型就登场,泛型就是在定义类的时候给出一个占位符标记,占位符的具体类型是在实例化对象的时候根据需求给出的,这样的类就是泛型类。
DEMO:定义一一个泛型类
以上的泛型类中的"T"就是一个占位符标记,在实例化对象之前不知道其类型,只有在实例化对象的时候指定出T的具体类型。
DEMO:使用泛型类创建对象
以上的使用了泛型避开了之前的向下转型,不存在类型转换异常的风险。
DEMO:使用int作为泛型的类型
以上的代码提示错误:表示不能使用int类型作为泛型的类型,在泛型中如果要使用基本数据类型必须使用其包装类代替。
DEMO:使用基本数据类型的包装类作为泛型
总结:
1、一个类型不确定的时候需要使用一个占位符标记占位,之后实例化对象的时候具体根据需要确定出泛型的类型。
2、泛型没有向下转型的风险。
3、Java泛型(generics) 是JDK5中引入的-一-个新特性,泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时监测非法的类型。使用泛型机制编写的程序代码要比那些杂乱地使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类尤其有用,例如,ArrayList 就是一个无处不在的集合类。
以下是我整理的Java学习资料免费提供
详细的java系统视频免费学习地址
有完整的Java初级,高级对应的学习路线和资料!专注于java开发。分享java基础、原理性知识、JavaWeb实战、spring全家桶、设计模式、分布式及面试资料、开源项目,助力开发者成长!
欢迎关注微信公众号:码邦主
原文转载:http://www.shaoqun.com/a/508905.html
杨颜:https://www.ikjzd.com/w/1820
邓白氏集团:https://www.ikjzd.com/w/582
一、泛型的概念如果要求在一个类中定义一个保存年龄的属性,这个属性定义为int还可以定义字符串类型:●privateintage;.●privateStringage;此时可以使用什么类型能表示这两种类型呢?首先想到的是Object类,该类是所有类型的父类,那么就可以使用该类型表示这个年龄的属性,因为子类类型可以向上转型为Object。Object是Java提供的一个最大父类,Java提供的所有其他
万色:万色
amazon go:amazon go
珠海圆明新园主要有什么景点?:珠海圆明新园主要有什么景点?
2020年国庆长隆水上乐园有什么好玩的?:2020年国庆长隆水上乐园有什么好玩的?
海口热门高尔夫球会 :海口热门高尔夫球会
没有评论:
发表评论