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类型的结果
答案 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正在给出错误。