/*
? 通配符,也可以理解为占位符。
泛型的限定:
1、 ? extends E:可以接收E类型或者E的子类型, 上限。
2、 ? super E:可以接收E类型或者E的父类型。 下限。
*/
import java.util.ArrayList;
import java.util.Iterator;
public class GenericDemo1 {
public static void main(String[] args) {
ArrayList<Person1> al = new ArrayList<Person1>();
al.add(new Person1("张三001",23));
al.add(new Person1("张三002",24));
al.add(new Person1("张三003",22));
al.add(new Person1("张三004",25));
print(al);
ArrayList<Student2> all = new ArrayList<Student2>();
all.add(new Student2("李四001",20));
all.add(new Student2("李四002",18));
all.add(new Student2("李四003",30));
all.add(new Student2("李四004",26));
print(all);
}
public static void print(ArrayList<? extends Person1> al){
//打印Person和Person的子类
Iterator<? extends Person1> it=al.iterator();
while(it.hasNext())
{
System.out.println(it.next().getNameAndAge());
}
}
}
class Person1{
private String name;
private int age;
public Person1(String name,int age){
this.name=name;
this.age=age;
}
public String getNameAndAge(){
return name+"-------"+age;
}
}
class Student2 extends Person1{
Student2(String name,int age){
super(name,age);
}
}
结果: