课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习Java编程开发语言等编程技术,而本文我们就通过案例分析来简单了解一下,Java编程泛型概念与应用规则。
一、什么是泛型
Java泛型(Generic)是J2SE1.5中引入的一个新特性,其本质是参数化类型,也就是说所操作的数据类型被指定为一个参数(typeparameter)这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
了解泛型概念之后的学习的目标是什么呢?
了解泛型的规则与类型擦除
了解类型和限制两种泛型的通配符
了解在API设计时使用泛型的方式(自定义泛型类、泛型接口、泛型方法)
掌握泛型的使用及原理。
掌握泛型在中间件或者开源框架里的应用
二、泛型的规则
在JDK5.0以前,如果一个方法返回值是Object,一个集合里装的是Object,那么获取返回值或元素只能强转,如果有类型转换错误,在编译器无法觉察,这就大大加大程序的错误几率!
从泛型的使用可以看出,泛型是一种类型约束,简而言之,泛型在定义类,接口和方法时使类型(类和接口)成为参数。与方法声明中使用的更熟悉的形式参数非常相似,类型参数为您提供了一种使用不同输入重复使用相同代码的方法。区别在于形式参数的输入是值,而类型参数的输入是类型。
JDK是在编译期对类型进行检查,提供了编译时类型的安全性。它为集合框架增加了编译时类型的安全性,并消除了繁重的类型转换工作。
然而泛型的应用也不是没有坑,比如上述代码,可以看出编译报错,这是不允许子类型化的泛型规则——假设允许,那么是不是可以改成以下的情况,在JDK里所有的类都是Object的子类,如果允许子类
型化,那么ls里不就可以存放任意类型的元素了吗,这就和泛型的类型约束完全相悖,所以JDK在泛型的校验上有很严格的约束。
为了防止子类型化混乱,泛型有了通配符的概念
无界通配符
在上述的泛型示例中,我们都是指定了特定的类型,至少也是Object,假设有一种场景,你不知道这个类型是啥,它可以是Object,也可以是Person那咋办?这种场景就需要用到通配符。
上界通配符
基于上述的场景,加入我想限制这个类型为Person的子类,只要是Person的子类就都可以,如果泛型写成那么只能强转如下所示,那么就失去了泛型的意义,又回到了初的起点。
下界通配符
原理同上界通配符,下界通配符将未知类型限制为特定类型或该类型的超类型,下限通配符使用通配符('?')表示,后跟super关键字。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。