黑马程序员技术交流社区
标题:
初学者:关于复写equals方法的难题
[打印本页]
作者:
蓝蓝的天
时间:
2015-4-21 20:14
标题:
初学者:关于复写equals方法的难题
class Duotai
{
private int num;
Duotai(int num)
{
this.num = num;
}
public boolean equals(Object obj)
{
if(obj instanceof Duotai)
{
Duotai d = (Duotai)obj;
return this.num == d.num;
}
}
}
class DuotaiDemoTest
{
public static void main(String[] args)
{
Duotai d1 = new Duotai(1);
Duotai d2 = new Duotai(1);
System.out.println(d1.equals(d2));
}
编译结果如下:
-----------------------------------------------------------------
G:\代码>javac DuotaiDemoTest.java
DuotaiDemoTest.java:21: 错误: 缺少返回语句
}
^
1 个错误
请问:问题出在哪里?不是已经有了return语句了吗?
作者:
itheima_llt
时间:
2015-4-21 21:46
谢谢楼主 。。。。。。
作者:
黑马94那么拽
时间:
2015-4-21 22:13
仔细看public boolean equals(Object obj) 是没有返回值的,返回值在if函数中
可以把代码改成
public boolean equals(Object obj)
{
if(this==obj)
return true;
if(!(obj instanceof Duotai))
throw new ClassCastException("类型错误");
Duotai d = (Duotai)obj;
return this.num==d.num;
}
作者:
关山明月
时间:
2015-4-21 22:55
楼上正解,你返回的是当符合if条件的时候的结果,当不符合if条件时你没有返回值
作者:
怀念子龙
时间:
2015-4-22 08:39
你肯定是用文本编辑器写的程序吧?如果放在eclipse中就可以发现了,都不用编译就会显示错误。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2