本帖最后由 quan23355 于 2013-11-26 22:58 编辑
下面的TreeSet同时放入了父类和子类的实例对象,实现Comparable接口的compareTo方法时,为什么要转成具体的对象?帮我详细解释下
- public class Parent implements Comparable {
- private int age = 0;
- public Parent(int age){
- this.age = age;
- }
- public int compareTo(Object o) {
- // TODO Auto-generated method stub
- System.out.println("method of parent");
- Parent o1 = (Parent)o;
- return age>o1.age?1:age<o1.age?-1:0;
- }
- }
- public class Child extends Parent {
- public Child(){
- super(3);
- }
- public int compareTo(Object o) {
- // TODO Auto-generated method stub
- System.out.println("method of child");
- // Child o1 = (Child)o;
- return 1;
- }
- }
- public class TreeSetTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- TreeSet set = new TreeSet();
- set.add(new Parent(3));
- set.add(new Child());
- set.add(new Parent(4));
- System.out.println(set.size());
- }
- }
复制代码
|