public class Mixup {
public static void main(String[] args) {
Object o = new Object();
TreeSet s = new TreeSet();
s.add(o);
}
}Object没有实现Comparable可不会编译出错。
public static void main(String[] args) {
Object o = new Object();
TreeSet s = new TreeSet();
s.add(o);
}
}Object没有实现Comparable可不会编译出错。
/**
* @param args
*/
public static void main(String[] args) {
Object o = new Object();
Preson p1 = new Preson("one","1");
Preson p2 = new Preson("two","2");
TreeSet s = new TreeSet();
s.add(p1);
s.add(p2);
Iterator it = s.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
class Preson{
private String name;
private String age;
public Preson(String name,String age){
this.name = name ;
this.age = age;
}
public String toString(){
return "name"+this.name+"-- age:"+this.age;
}
}
s.add(p2);
必然要出错的,没有实现Comparable接口。
import java.util.TreeSet;
public class TreeMapTest {
public static void main(String[] args) {
Object o1 = new Object();
Object o2 = new Object();
TreeSet s = new TreeSet();
try{
s.add(o1);
s.add(o2);
}catch(Exception e){
System.out.println(e);
}
}
}
原本它可以在编译时候依靠generic来检查,代码就像这样:
class TreeSet<E extends Comparable>.....
这样的话就能在编译时候做检查。但是这样的话,就有了矛盾:那些没实现Comparable但是靠Comparator的机制就不行了。