您的位置:首页 > 其它

TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!

2015-07-26 15:52 519 查看
/**
*
* @author ocq
*/
class Parent implements Comparable {

private int age = 0;

public Parent(int age) {
this.age = age;
}

public int compareTo(Object o) {
System.out.println("method of 父类");
Parent o1 = (Parent) o;
return age > o1.age ? 1 : age < o1.age ? -1 : 0;
}
}

class Child extends Parent{

public Child() {
super(3);
}

public int compareTo(Object o) {
System.out.println("method of 子");
return 1;
}
}

public class ComparableTest {

/**
* @param args
*/
public static void main(String[] args) {
TreeSet set = new TreeSet();
set.add(new Parent(3));
set.add(new Child());
set.add(new Child());
set.add(new Parent(4));
System.out.println(set.size());
//        测试结果:
//        如果子类和父类都复写了compareTo方法那么各自调用自己的compareTo方法
//        如果子类没有复写compareTo方法,那么调用的都是父类的compareTo方法
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: