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;
}
}