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