黑马程序员技术交流社区

标题: 覆写compareTo中的一点疑问? [打印本页]

作者: 陈泽鑫    时间: 2012-12-10 19:27
标题: 覆写compareTo中的一点疑问?
为什么在覆写comparable的compareTo方法
main(){
    System.out.println(new Person("a").compareTo("b"));
}

class Person implements Comparable{
    String name;
    Person(String name){
        this.name = name;
    }
    public int compareTo(Object obj){
        String s = (String)obj;
        return this.name.compareTo(s);//为什么这里虚拟机是调用String的compareTo方法,而不是递归此方法呢?        
    }
}

String的方法public int compareTo(String anotherString)
comparable的方法int compareTo(T o)

如果说参数和返回值完全一样才可以递归的话,还是有一点疑问参数如果是String类型时并不冲突啊
内部是怎么区分的通过反射来确定是否重载,覆写或者递归的吗?
又是如何调用的String的compareTo方法


作者: 赵学刚    时间: 2012-12-10 19:44
我只知道 this.name就是个字符串 所以 是字符串调用了 String 类的compareTo(s)方法,递归就是调用的对象是 this 而不是this.name 至于反射  还不甚了解,期待下来高手解答..........
return this.name.compareTo(s);//为什么这里虚拟机是调用String的compareTo方法,而不是递归此方法呢?





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2