A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈泽鑫 中级黑马   /  2012-12-10 19:27  /  1089 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么在覆写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方法

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
我只知道 this.name就是个字符串 所以 是字符串调用了 String 类的compareTo(s)方法,递归就是调用的对象是 this 而不是this.name 至于反射  还不甚了解,期待下来高手解答..........
return this.name.compareTo(s);//为什么这里虚拟机是调用String的compareTo方法,而不是递归此方法呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马