天天看点

?通配符 以及扩展通配符在范型中的应用。。。。。。。。。。。。。。。。。。

一、通配符

?标识的范型化对象,可以标识任意类型的范型化   ,可以将任意类型化的值赋值给 ?通配符所规范化的类。  可以将任意类型的范型化类型  赋值给?通配符范型化的类型 。

 Collection<Integer> c=new ArrayList() ;

  c.add(1)  ;

  c.add(5);   //jdk1.5的自动装箱子=功能 

  showCollection(c) ;

 public  static void  showCollection(Collection <?> col)    //加上了?通配符类型化的集合 可以传递不同类型化的集合   ,但是只能调用与类型化无关的方法  与类型化有关的方法不可以调用

 {

  System.out.println(col.size());

  for(Object obj:col)

  {

   System.out.println(obj);

  }

 }

二、扩展通配符

Collection <? extends  java.lang.String>      //表示集合元素是Java.lang.String 或者他的派生类

Collection <? super  java.lang.String>      //表示集合元素是Java.lang.String 或者他的父类

Collection<? super String>cc=new ArrayList<Object>() ;        //可以将包含String或者String的基类的集合赋值给 通配符类型化的集合  ,其他类型也可以   

Collection<? extends Object> c=new ArrayList<Integer>() ;  //Object 以及继承自他的 类都能赋值