8-6 泛型

package generic;

import java.util.ArrayList;
import java.util.Collection;

public class TestOne {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        
        //8.6约束和局限性
        //8.6.1不能用基本类型实例化类型参数
        //8.6.3 不能创建参数化类型的数组
        
//        Pair<String> [] pair = new Pair<String>[2]; //error
//         Pair<String>[]  pair =null; //合法的
         Pair<String>[]  pair = (Pair<String>[]) new Pair<?>[2];//声明通配型的数组进行转换,不安全
pair[0]  = new Pair<String>();
//pair[1]  = new Pair<Employee>();    
        
         //收集参数化类型对象 ArrayList 比较好
//         ArrayList<Pair<String>> pair  = new ArrayList<Pair<String>>();


        //8.6.4  Varargs警告
        //向参数可变的方法传递一个可变的实例  泛型数组
        Collection<Pair<String>> collection = null;
        Pair<String> pair1 = null;
        Pair<String> pair2 = null;
//        addAll(collection, pair1,pair2);
        
        // 一般用 @SuppressWarnings("unchecked")  javase 7 可用 @SafeVarargs
        
        
        Pair<String> [] pairArr = array(pair1,pair2);
        Object[] arr = pairArr;
        arr[0] = new Pair<Employee>();

    }
    //8.6.4 
    @SafeVarargs
    public static <T> void addAll(Collection<T> collection, T ... ts ){
        for(T  t : ts  ){
            collection.add(t);
        }
    }
    
    public static <E> E[] array(E ... array){
        return array;
    }

}

 

posted @ 2018-02-06 13:21  aLa神灯  阅读(99)  评论(0编辑  收藏  举报