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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张振纲 中级黑马   /  2012-8-25 20:30  /  1237 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public int compareTo(Object o) {
                int re;
                if((re=new Integer(this.sum).compareTo(new Integer(((Student) o.sum()))))!=0){
                        return re;
                }
                else{
                        return this.name.compareToIgnoreCase((String)o.name);
                }
        }

定义了一个类想复写其中的compareTo方法,可是始终提示o.sum()出现错误,请问为何?

4 个回复

倒序浏览
o.sum()是什么东西,o是Object类型的对象,它没有sum()方法,故不能调用o.sum()
回复 使用道具 举报
将要比较的对象o先转换成Student类型才行,if语句中compareTo方法参数部分new Integer(((Student) o.sum()))))!=0应该改成new Integer(((Student)o).sum())!=0。还有return this.name.compareToIgnoreCase((String)o.name);中的(String)o.name也应该改成((Student)o).name才行吧!
(Student) o.sum()的意思是先调用o对象中sum方法,将方法返回的结果转换成Student对象。而传递进来的o是Object类型的,Object内部并没有定义sum方法。所有会报错

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
好像Object也没有name方法吧,是不能调用的
回复 使用道具 举报
楼上讲的正确的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马