黑马程序员技术交流社区
标题:
为什么复写compareTo方法出现错误
[打印本页]
作者:
张振纲
时间:
2012-8-25 20:30
标题:
为什么复写compareTo方法出现错误
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()出现错误,请问为何?
作者:
杨震
时间:
2012-8-25 20:53
o.sum()是什么东西,o是Object类型的对象,它没有sum()方法,故不能调用o.sum()
作者:
唐见
时间:
2012-8-25 20:55
将要比较的对象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方法。所有会报错
作者:
杨震
时间:
2012-8-25 20:56
好像Object也没有name方法吧,是不能调用的
作者:
杨震
时间:
2012-8-25 20:58
楼上讲的正确的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2