1.交换数组中两个元素的位置的泛型方法定义如下:private static<T> void swap(T[] a,int i,int j){
T temp = a[i];
a[i] = a[j];
a[j] = temp; }
2.用于放置泛型的类型参数的尖括号应出现在方法的所有修饰符之后和返回类型之前。
3.只有引用类型才能作为泛型方法的实际参数,基本类型则不可以 如:swap(new int[]{1,3},1,2);
4.定义泛型时也可以使用extends修饰符,如<V extends
Serializable&cloneable> void
method();
5.也可以用类型变量表示异常,可以用于方法的throws列表中,但不能用于catch中。
6.泛型中可以有多个类型参数,在定义它们的尖括号中用逗号分开。Public static
<K,V> V getValue(K key) {return
map.get(key);}
7.用类型变量表示异常:
Private static <T extends Exception>
sayHellow() throws T{
try{
}
catch(Exception e){
throw (T)e;
}
}
8.练习:
@把任意类型的集合元素复制到相应类型的数组中
copy1(new Vector<String>(),new
String[10]);
copy2(new Date[10],new String[10]); //取交集Object
//copy1(new Vector<Date>(),new
String[10]); //传播性,T赋值Date,与String无法通过
private static<T> void
copy1(Collection<T> src,T[]
desc){
int i=0;
for(T obj : src){
desc[i++]=obj;
}
}
//把任意类型的数组复制到同类型的另一个数组中
private static<T> void copy2(T[]
desc,T[] src){
int i=0;
for(T obj : desc){
src[i++]=obj;
}
}
@采用自定义泛型的方式打印出任意参数类型中的所有元素
private static<T> void
printCollection(Collection<T>
collection,T obj2 ){
for(T obj : collection){
System.out.println(obj);
}
collection.add(obj2);
}
@定义一个 方法,可以将任意类型的某个数组填充为相应类型的某个对象
private static<T> void fillArray(T[]
a,T obj){
for(int i=0;i<a.length;i++){
a[i] = obj;
}
}
@定义一个 方法,自动将Object类型的对象转换成其它类型
private static<T> T
autoConvert(Object obj){
return (T)obj;
}
浙公网安备 33010602011771号