为什么在equals方法中必须使用2个return语句

时间:2014-06-16 12:33:56

标签: java return equals

public class MyStuff {
    String name;

    MyStuff(String n) {
        name = n;
    } 

    public static void main(String[] args) {
        MyStuff m1 = new MyStuff("guitar");
        MyStuff m2 = new MyStuff("tv"); 

        System.out.println(m2.equals(m1));
    }

    public boolean equals(Object o) {
        MyStuff m = (MyStuff) o;

        if (m.name != null)
            return true;

        return false;
    }
}

当我删除其中一个return语句时,编译器会给出错误:此方法必须返回boolean类型的结果

4 个答案:

答案 0 :(得分:5)

return true仅在if条件为真时执行。对于所有其他情况,您需要return false

答案 1 :(得分:4)

这显然是因为你的代码实际上是

....
    MyStuff m = (MyStuff) o;
    if(m.name != null)
    {
        return true;
    }
    return false;
}

请使用括号,并在Project中设置Eclipse Formatter - >属性 - > Java代码风格 - >格式化程序 - >配置工作区设置 - >新 - >制作一个实际上很好的个人资料 - >申请 - >在代码中按Ctrl + Shift + F.

事实上,我个人推荐Eclipse的以下Formatter设置,这是我使用的设置:https://dl.dropboxusercontent.com/u/4363931/BestEclipseFormatterSettings.xml

答案 2 :(得分:1)

如果你的情况真的很简单,那么只返回你的比较结果会简单得多:

return m.name != null;

在进行布尔比较时没有任何价值,然后单独使用if块返回结果。

答案 3 :(得分:0)

如果只使用一个return语句,则equals()仅在m.name!= null时返回结果,否则该方法没有任何其他return语句。因此,compilar正在给出错误。