本帖最后由 王飚 于 2013-10-16 18:02 编辑
- /*
- 泛型的限定2
- 下限<? super E>
- 关于老师在视屏中的讲解,说这个例子是泛型下限的例子。
- 但是泛型的下限不是<? super E>也就是子类对象是确定啊,
- 但是在这个例子中的比较器Comp却是Person(父类)的类型,
- 这点我很迷惑,求解答
- */
- import java.util.*;
- class GenericDemo_6
- {
- public static void main(String[] args)
- {
-
- TreeSet<Student> ts1= new TreeSet<Student>(new Comp());
- ts1.add(new Student("ab01"));
- ts1.add(new Student("ab03"));
- ts1.add(new Student("ab02"));
- ts1.add(new Student("ab04"));
- Iterator it1=ts1.iterator();
- while(it1.hasNext())
- {
- System.out.println(it1.next());
- }
-
- TreeSet<Worker> ts= new TreeSet<Worker>(new Comp());
- ts.add(new Worker("ab---w01"));
- ts.add(new Worker("ab---w03"));
- ts.add(new Worker("ab---w02"));
- ts.add(new Worker("ab---w04"));
- Iterator it=ts.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;
- }
- public String toString()
- {
- return "Person"+name;
- }
- }
- //定义父类类型的比较器就可以传入不同的子类对象了
- class Comp implements Comparator<Person>
- {
- public int compare(Person p1,Person p2)
- {
- return p2.getName().compareTo(p1.getName());//倒序
- }
- }
- /*
- //比较器
- 发现这样写比较麻烦,因为每要存储一个对象都要写一个新的比较器
- class WorkComp implements Comparator<Worker>
- {
- public int compare(Worker s1,Worker s2)
- {
- return s1.getName().compareTo(s2.getName());
- }
- }
- //Worker的比较器
- class Comp implements Comparator<Worker>
- {
- public int compare(Worker s1,Worker s2)
- {
- return s1.getName().compareTo(s2.getName());
- }
- }
- */
- class Student extends Person
- {
- Student(String name)
- {
- super(name);
- }
- }
- class Worker extends Person
- {
- Worker(String name)
- {
- super(name);
- }
- }
复制代码 |