黑马程序员技术交流社区

标题: 黑马程序员--泛型简介 [打印本页]

作者: 敷衍ゝ微笑掩盖    时间: 2014-7-1 17:31
标题: 黑马程序员--泛型简介
------- <a  target="blank">android培训</a>、<a  target="blank">java培训</a>、期待与您交流! ---------
泛型是给编译器看的,用泛型可以穿过编译器向一个ArrayList<Integer> il= new ArrayList<Integer>()的数组中添加一个字符串。
    ArrayList<E>  整个称为泛型
ArrayList<E> E称为类型变量,或类型参数;
ArrayList<Integer> 整个称为参数化类型。
ArrayList<Integer>   中的Integer称为类型参数的实例或实际类型参数。
① 参数化类型与原始类型的兼容性
参数化类型可以引用一个原始类型的对象,编译器报警告。
    Collection<String>  c = new Vector();
原始类型可以引用一个参数化类型的对象,编译器报警告。
Collection  c = new Vector<String>();

② 参数化类型不考虑类型参数的继承关系。
Vector<String>  v= new Vector<Object>();//错误,不写<Object>可以,写了就是明知故犯。
Vector<Object>  v= new Vector<String> ();//错误。

③ 在创建数组实例时,数组的元素不能使用参数化的类型,如
Vector<Integer>  v[]= new Vector<Integer>[10];//错误

④ 泛型的通配符。
使用?统配符可以引用其他各种参数化的类型,?通配符定义的变量主要用作引用,可以调用与参数化无关的方法,不能调用与参数化有关的方法。
如:  Vector<?> v= new Vector<Integer>();
限定通配符的上边界:
正确:  Vector<? Extends  Number> v= new Vector<Integer>();
错误:  Vector<? Extends  Number> v= new Vector<String>();
限定通配符的下边界:
正确:  Vector<? super  Integer> v= new Vector<Number>();
错误:  Vector<? Super  Integer> v= new Vector<Byte>();
注意:限定通配符总是包括自己。
作者: 马到成功2014    时间: 2014-7-1 19:11
谢谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2