------- <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>(); 
注意:限定通配符总是包括自己。 |   
        
 
    
    
    
     
 
 |