黑马程序员技术交流社区

标题: 初学者:关于复写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