泛型通配符
实例代码
package my.demo;
import java.util.ArrayList;
import java.util.Iterator;
public class mainFunction {
public static void main(String[] args){
ArrayList<Integer> list = new ArrayList<>();
ArrayList<String> list1 = new ArrayList<>();
list.add(123);
list.add(456);
list1.add("abc");
list1.add("def");
PrintArray(list);
PrintArray(list1);
}
public static void PrintArray(ArrayList<?> list)
{
Iterator<?> it = list.iterator();
while(it.hasNext()) {
Object obj = it.next();
System.out.println(obj);
System.out.println(", ");
}
}
}
结果
泛型的上下限限定
定义
package my.demo;
import java.util.ArrayList;
import java.util.Collection;
/*
泛型的上限限定: ? extend E 代表使用的泛型只能是E类型的子类/本身
泛型的下限限定: ? super E 代表使用的泛型只能是E类型的父类/本身
* */
public class GenericDemo1 {
public static void main(String[] args) {
Collection<Integer> list1 = new ArrayList<Integer>();
Collection<String> list2 = new ArrayList<String>();
Collection<Number> list3 = new ArrayList<Number>();
Collection<Object> list4 = new ArrayList<Object>();
GetElement1(list1);
GetElement1(list2); // String extends Object , String不是Number的子类
GetElement1(list3);
GetElement1(list4); // Object 不是Number的子类
GetElement2(list1); // Integer extends Numbers,Integer不是Numer的父类
GetElement2(list2); // String 不是Number的父类
GetElement2(list3);
GetElement2(list4);
}
public static void GetElement1(Collection<? extends Number> col){}
public static void GetElement2(Collection<? super Number> col){}
}