import java.util.*;
/*
? 通配符, 代表任意字符
泛型的限定:
? extends E:可以接收E类型或E的子类型 上限
? super E:可以接收E类型或E的父类 下限
*/
class GenericDemo4
{
public static void main(String[] args)
{
/*
ArrayList<String> al = new ArrayList<String>();
al.add("abc01");
al.add("abc02");
al.add("abc03");
al.add("abc04");
ArrayList<Integer> al1 = new ArrayList<Integer>();
al1.add(4);
al1.add(7);
al1.add(5);
al1.add(6);
printColl(al);
printColl(al1);
*/
ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("abc ----5"));
al.add(new Person("abc ----4"));
al.add(new Person("abc ----3"));
al.add(new Person("abc ----2"));
//printColl(al);
ArrayList<Student> al1 = new ArrayList<Student>();
al1.add(new Student("xiaosan01"));
al1.add(new Student("xiaosan05"));
al1.add(new Student("xiaosan04"));
al1.add(new Student("xiaosan02"));
printColl(al1);
TreeSet<Student> ts = new TreeSet<Student>(new Comp());
ts.add(new Student("xiaos---an01"));
ts.add(new Student("xiaos---an05"));
ts.add(new Student("xiaos---an04"));
ts.add(new Student("xiaos---an02"));
Iterator<Student> it = ts.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());
}
}
public static void printColl(ArrayList<? extends Person> al) //使用限定泛型
{
Iterator<? extends Person> it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());
}
}
/*
public static void printColl(ArrayList<?> al) //使用泛型
{
Iterator it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
*/
}
class Person
{
private String name;
Person(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
class Student extends Person //<? super E>
{
Student(String name)
{
super(name);
}
}
class Comp implements Comparator<Person> //<? super E>
{
public int compare(Person s1,Person s2)
{
return s1.getName().compareTo(s2.getName());
}
}
/*
? 通配符, 代表任意字符
泛型的限定:
? extends E:可以接收E类型或E的子类型 上限
? super E:可以接收E类型或E的父类 下限
*/
class GenericDemo4
{
public static void main(String[] args)
{
/*
ArrayList<String> al = new ArrayList<String>();
al.add("abc01");
al.add("abc02");
al.add("abc03");
al.add("abc04");
ArrayList<Integer> al1 = new ArrayList<Integer>();
al1.add(4);
al1.add(7);
al1.add(5);
al1.add(6);
printColl(al);
printColl(al1);
*/
ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("abc ----5"));
al.add(new Person("abc ----4"));
al.add(new Person("abc ----3"));
al.add(new Person("abc ----2"));
//printColl(al);
ArrayList<Student> al1 = new ArrayList<Student>();
al1.add(new Student("xiaosan01"));
al1.add(new Student("xiaosan05"));
al1.add(new Student("xiaosan04"));
al1.add(new Student("xiaosan02"));
printColl(al1);
TreeSet<Student> ts = new TreeSet<Student>(new Comp());
ts.add(new Student("xiaos---an01"));
ts.add(new Student("xiaos---an05"));
ts.add(new Student("xiaos---an04"));
ts.add(new Student("xiaos---an02"));
Iterator<Student> it = ts.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());
}
}
public static void printColl(ArrayList<? extends Person> al) //使用限定泛型
{
Iterator<? extends Person> it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next().getName());
}
}
/*
public static void printColl(ArrayList<?> al) //使用泛型
{
Iterator it = al.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
*/
}
class Person
{
private String name;
Person(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
}
class Student extends Person //<? super E>
{
Student(String name)
{
super(name);
}
}
class Comp implements Comparator<Person> //<? super E>
{
public int compare(Person s1,Person s2)
{
return s1.getName().compareTo(s2.getName());
}
}