【Java面试题】42 TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!
2017-03-29 10:49
1046 查看
应该是没有针对问题的确切的答案,当前的add方法放入的是哪个对象,就调用哪个对象的compareTo方法,至于这个compareTo方法怎么做,就看当前这个对象的类中是如何编写这个方法的
试验如下:
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()); } public static 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 static 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; } } }
运行结果:
method of parent
method of child
method of parent
method of parent
3
相关文章推荐
- TreeSet里面放对象,如果同时放入了父类和子类的实例对象,那比较时使用的是父类的compareTo方法,还是使用的子类的compareTo方法,还是抛异常!
- java基础问题----------TreeSet里面放对象,如果同时放入了父类和子类的实例对象
- java中实例子类会有父类对象产生吗?如果不产生父类对象为什么子类有父类的属性和方法?
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- java子类对象在子类方法中使用父类属性 使用this和super都可以
- EF异常‘在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。 请注意不保证 DbContext 的实例成员’
- 正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不
- 子类继承父类时,子类与父类有同名变量,当使用子类对象调用父类方法使用同名变量,这个变量是子类的,还是父类的?(转)
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- 关于java中子类,父类中,静态代码块: staic{},动态代码块:{},构造方法,类属性,对象属性等执行顺序做个总结:
- 黑马程序员--java中父类和子类都有构造方法时,子类对象的初始化过程
- 关于java基础中,接口里面父类的对象指向子类的引用
- Java 中子类重写父类的方法时声明抛出异常不能比父类范围大
- 使用java反射中的getMethod,invoke方法调用对象方法的实例
- java 集合框架(TreeSet操作,自动对数据进行排序,重写CompareTo方法)
- Java继承关系中,父类方法使用实例变量和调用实例方法的探究
- java中compareTo和compare方法之比较,集合中对象的比较
- java 父类访问子类对象的实例变量 继承过程中的执行顺序
- java面试题解惑:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
- java比较接口Comparable,对象排序存在TreeSet中