/*
? 是通配符。也可以理解为占位符。
泛型的限定:
? extends E :可以接收E类型或者E的子类型。上限。
? super E :可以接收E类型或者E的父类型。下限。
*/
import java.util.*;
class Person
{
private String name;
Person(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
}
class Student extends Person
{
Student(String name)
{
super(name);
}
}
class GenericDemo7
{
public static void main(String[] args)
{
ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("abc1"));
al.add(new Person("abc2"));
al.add(new Person("abc3"));
ArrayList<Student> al1 = new ArrayList<Student>();
al1.add(new Student("abc--1"));
al1.add(new Student("abc--2"));
al1.add(new Student("abc--3"));
printCollection(al);
printCollection(al1);
}
public static void printCollection(ArrayList<? extends Person> al)//泛型限定:上限
{
Iterator<? extends Person> it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());
}
}
}