什么是Java泛型?

一、泛型的概念

如果要求在一个类中定义一个保存年龄的属性,这个属性定义为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学习资料免费提供

这里的话我也将我之前在学习过程中用到的一些学习资料整理成了文档,以及我自身之前的一个面试文案和知识点补充,有需要的朋友可以加我的QQ学习交流群   697888503   ,这里也希望大家最终都能够学有所成,学习编程不是一天两天的功夫,勤能补拙才是硬道理,祝大家最终都能成为一名合适开发攻城狮。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值