package test; import java.util.*; import privateclass.*; import java.io.*; public class Main { private static final String space_operator = " "; public static void main(String[] args) throws Exception { Scanner scanner = new Scanner(new BufferedInputStream(System.in)); PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); ArrayList<String> a1 = new ArrayList<String>(); a1.add("上水"); a1.add("布谷鸟"); printcollection1(a1); ArrayList<String> a2 = new ArrayList<String>(); a2.add("zhuzhu"); a2.add("zhiliao"); printcollection1(a2); ArrayList<Integer> a3 = new ArrayList<Integer>(); a3.add(4); a3.add(6); printcollection2(a3); printcollection3(a3); ArrayList<Student> a4 = new ArrayList<Student>(); a4.add(new Student("治疗", 3)); a4.add(new Student("唐三", 4)); printcollection4(a4); } //只要是collection的小弟我们就可以打印出来不过我们的泛型是string public static void printcollection1(Collection<String> a1) { Iterator<String> it = a1.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } //当我们加了?只要是collection的小弟我们都可以打印出来 public static void printcollection2(Collection<?> a1) { Iterator<?> it = a1.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } //当我们加了类型T我们就可以直接用T定义并且打印 public static <T> T printcollection3(Collection<T> a1) { T t = null; Iterator<?> it = a1.iterator(); while(it.hasNext()) { System.out.println(it.next()); } return t; } //当我们加上?extends 我们就可以限定加入的类型全是Person的子类或者Person类 public static void printcollection4(Collection<? extends Person> a1) { Iterator<? extends Person> it = a1.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } //当我们加上?super 我们就可以限制这个类型的下限,我们这样接受的类型都是Student或者Student父类 public static void printcollection5(Collection<? super Person> a1) { Iterator<? super Person> it = a1.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }