黑马程序员_java的泛型机制(第十五课总结)

来源:互联网 发布:云计算谁提出的 编辑:程序博客网 时间:2024/05/19 12:29

------- android培训、java培训、期待与您交流! ----------


通过今天对java语言中泛型的学习,我来给自己的学习内容做下简单直白的总结:

首先,我来总结下什么是泛型?

泛型是一种安全机制,用来解决安全问题的..

在集合类中,它就帮我们很好的就解决了 类型转换异常 的安全问题...

重点:泛型有什么作用?

比如:ArrayList<String> al=new ArrayList<String>();

1,如果集合中没有泛型,集合返回的元素一般都是object类型..而泛型的出现帮我们避免了强制转换的麻烦..

2,将运行时期出现的类型转换异常,转移到了编译时期,方便程序员来解决问题..

泛型的格式:通过<>来定义要操作的引用数据类型..<>里就是用来定义类型的...


当我们在使用java提供的对象时候,应该什么时候写泛型呢?

通常情况下,泛型在集合框架中很常见,只要见到<>就要定义泛型...


在我们定义类的时候,能不能也使用泛型呢?

我们也可以定义一个自己的泛型类:如图代码:


那我们什么时候来自定义泛型类呢?

从上述代码中我们可以看出,当类中要操作的引用数据类型不确定的时候,我们就可以定义泛型类来完成扩展..

注意:泛型类定义的泛型,在整了类中有效,如果被方法使用,那么泛型类的对象明确了要操作的具体类型后,所有要操作的类型都已经固定了...


为了让不同的方法可以操作不同的类型,而且类型还不确定,那么我们也可以将泛型定义在方法上..

定义泛型方法:如图代码:


从上述代码中可以看出,泛型定义在方法上,传递什么类型,它就能操作什么类型..

最后扩展:我们可以将泛型定义在类上,也可以将泛型定义在方法上..其实,我们在定义一个类时,可以将该类兴义成泛型类,也可以将类中的方法定义成泛型方法...

注意:静态方法不可以访问类上定义的泛型,如果静态方法操作的应用数据类型不确定..可以将泛型定义在方法上




下面,我来总结下泛型的高级应用:泛型限定

?:在泛型中就相当于通配符,就是不明确类型

在<>中定义的泛型,左右两边都要一致,不存在着多态...

要想有多态,也可以,那我们需要将泛型定义一个范围:

比如<? extends person> 就相当于只能接受person类和person的子类...这就是泛型限定


泛型限定有2个限制:

1,上限:? extends E   可以接受E类型和E的子类型...

2,下限:  ? super  E可以接受E类型和E的父类型...