import java.util.*;
class Person implements Comparable
{
String name;
public Person(String name)
{
this.name = name;
}
public int compareTo(Object obj)
{
if(!(obj instanceof Person))
return -1;
Person p = (Person) obj;
return this.name.compareTo(p.name);
}
public String toString()
{
return this.name;
}
}
class Student extends Person
{
public Student(String name)
{
super(name);
}
}
class StuComparator implements Comparator<Person>//(? super E)
{
public int compare(Person p1,Person p2)
{
}
}
public class Hello
{
public static void main(String[] args)
{
TreeSet<Student> p = new TreeSet<Student>(new StuComparator());
}
}
红色部分这个所谓的下限(? super E)的E是不是TreeSet<Student>中所指的Student ?谢谢
java.util.TreeSet<E> 代表一个有序的元素为E的树,它其中的一个构造器需要一个Comparator类来比较两个元素,以E为String类时为例,此时的Comparator可以是Comparator<String>,也可以是Comparator<Object>,但Comparator<Integer>就不行,如何表示这样的限制呢?
jdk源代码中是这样的:
public TreeSet(Comparator<? super E> c)
这样就保证了传给构造器的Comparator是可以进行E元素的比较的。