import java.util.ArrayList;
import java.util.Iterator;
/**
* ?通配符。也可以理解为占位符。
* 泛型的限定;
* ? extends E :可以接受E类型以及其子类型;上限
* ? super E : 可以接受E类型以及其父类型;下限
*
*/
public class GenericDemo01 {
public static void main(String[] args) {
//person
ArrayList<Person> per = new ArrayList<Person>();
per.add(new Person("jack", 11));
per.add(new Person("tom", 22));
printPerson(per);
System.out.println("----------------------------");//分隔线
//Stu
ArrayList<Stu> stu = new ArrayList<Stu>();
stu.add(new Stu("jackStu", 11));
stu.add(new Stu("tomStu", 22));
printPerson(stu);
}
public static void printPerson(ArrayList<? extends Person> per){//可以传 Person及其子类
Iterator<? extends Person> it = per.iterator();
while(it.hasNext()){
System.out.println(it.next().getName());
}
}
}
class Person{
private String name;
private int age;
public Person(String name, int age) {
this.age = age;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
class Stu extends Person{
public Stu(String name, int age) {
super(name, age);
}
}