return 都在条件语句中,如果条件不满足就可能没有返回语句,虽然你的逻辑可能能够保证至少有一个出口,但编译器不一定知道其实这种有多个出口的子程序不是一种好的风格,应该设置标志,最后在一个地方返回。
这种写法的考虑可能是只要条件满足,立即返回不用执行后面的判断速度会快一些,但设置标志的方法可以通过优化程序结构达到相同的目的

解决方案 »

  1.   

    public boolean equals(Object obj)
    {
    if(this==obj)
            {
             return true;
            }
            
            if(obj!=null && getClass() == obj.getClass ())
            {
                 Ball gb=(Ball)obj;
                 if(brand.equals(gb.getBrand())&&make.equals(gb.getMake())&&compression==gb.getCompression())
                 {
                  return true;
                 }         }
             else
             {
                   return false;
             }
        }
      

  2.   

    public boolean equals(Object obj)
        {
            if(this==obj)
            {
             return true;
            }
            
            if(obj!=null && getClass() == obj.getClass ())
            {
                 Ball gb=(Ball)obj;
                 if(brand.equals(gb.getBrand())&&make.equals(gb.getMake())&&compression==gb.getCompression())
                 {
                  return true;
                 }
    /////////////////////////////////////////////////////////////////////
    //如果执行到这里,且上面的if语句不成立的话就差一个return语句。
    /////////////////////////////////////////////////////////////////////
             }
             else
             {
                   return false;
             }
        }
      

  3.   

    应该这样:
    public boolean equals(Object obj)
        {
            if(this==obj)
            {
             return true;
            }
            
            if(obj!=null && getClass() == obj.getClass ())
            {
                 Ball gb=(Ball)obj;
                 if(brand.equals(gb.getBrand())&&make.equals(gb.getMake())&&compression==gb.getCompression())
                 {
                  return true;
                 }
                 else                //////////////////
                 {                  ///////////////////
                  return false;////////////////////
                 }                 ////////////////////         }
             else
             {
                   return false;
             }
        }
      

  4.   

    或者:
    public boolean equals(Object obj)
        {
            if(this==obj)
            {
             return true;
            }
            
            if(obj!=null && getClass() == obj.getClass ())
            {
                 Ball gb=(Ball)obj;
                 if(brand.equals(gb.getBrand())&&make.equals(gb.getMake())&&compression==gb.getCompression())
                 {
                  return true;
                 }         }
            // else     //去掉这个else
            // {
            //       return false;
            // }        return false;
        }
      

  5.   

    if和else那儿返回一个boolean类型的,用一个参数接收,然后把那个参数返回就ok了
      

  6.   

    我一般这么写
    public boolean equals(Object obj){
        boolean flag=false;
        if(this==obj){
            flag=true;
        }        
        if(obj!=null && getClass() == obj.getClass ()){
            Ball gb=(Ball)obj;
            if(brand.equals(gb.getBrand())&&make.equals(gb.getMake())                &&compression==gb.getCompression()){
                flag=true;
            }
        }
        else{
            flag=false;
        }
        return flag;
    }
      

  7.   

    回复人: js_dw(dw) ( ) 信誉:100 
    的是正解,
      

  8.   

    如果 if else 太多了,不如用别的方法替换  ,这样条例更清楚。比如 try{  /* .... */   } catch(ClassCastException ) {  return false;} catch(NullPointerException e){ return false; }