------- 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的父类型...