黑马程序员_Java中的泛型机制

来源:互联网 发布:mac版lol官网 编辑:程序博客网 时间:2024/05/22 03:08

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



一、泛型:jdk1.5版本以后新特性,通常使用在集合框架中,对集合中的可存入各种数据类型的一种限定,避免了 再进一步对集合操作时的强转带来的安全隐患,是一个类型的安全机制。

二、 泛型的格式:通过<>来定义要想操作的引用数据类型,当使用集合时,将集合中存储的数据类型作为参数传递到<>中即可。

三、 泛型中的常见的术语:

1)  ArrayList<E>//这就是一个泛型类型,E称为类型变量或类型参数;

2)  ArrayList<String>//称为参数化的类型,String称为类型参数的实例,或者是实际类型参数

3)  ArrayList//称为原始类型。

四。、泛型的内部原理:泛型是提供给javac编译器使用的,用来限制集合中的其它输入,而当编译器在编译这些带有泛型类型的集合时,会去掉类型的信息,使程序运行效率不会受到影响,对于参数化的泛型类型和原始类型的getClass()方法的返回值是一样的。

五、参数化的类型与原始类型的兼容性

1)参数化类型可以引用一个原始类型的对象,编译报告警告;

2)原始类型可以引用一个参数化的类型的对象,编译报告警告;

六、参数化类型不考虑类型参数之间的继承关系:

1)Vector<String>  v=new Vector<Object>()编译错误;

2)Vector<Object>  v=new Vector<String>()编译错误;

七、在创建数组实例时 ,数组的类型不能使用参数化的类型:

Vector <String>vector[]=new Vector<String>[11];编译错误。

八、泛型还可定义在接口,类和方法上。类上定义的泛型,对整个类有效,如果被哪个方法使用了,因为泛型类的对象已经确定了要操作的具体类型,所以,引用 它的方法要操作的数据类型也就跟着泛型类的对象而确定了;为了让不同的方法可以操作不同的类型,而且,类型还不确定,可以让方法定义在方法上。

特殊之处:静态方法不可以访问类上定义的泛型,如果,静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。

九、泛型的高级应用

1)<?>泛型中的统配符,也可理解为占位符,它可以理解为只是一种泛型的类型,具体是什么类型,那就看实际需要时,需要什么类型就可定义成什么类型,他只是起到一种占位的作用;

2)泛型的限定:<? Extends  e>接收的泛型的参数类型是e类型或者e类型的子类型;

<? Super e>接收的参数类型是e的父类型或者是e类型。

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


0 0