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

    /**
     *
     * @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方法    
        }
    }
  • 相关阅读:
    ConcurrentHashMap源码阅读
    java中Scanner类nextLine()和next()的区别和使用方法
    setuid
    lsattr
    设置umask
    touch
    od
    vi 搜索
    nl
    cat 参数
  • 原文地址:https://www.cnblogs.com/langtianya/p/4677928.html
Copyright © 2011-2022 走看看