public MyObject method1() {
boolean someBoolean = true;
MyObject obj = ...;
if(!someBoolean) method1();
else return obj;
// flow should never come to this statement, but compiler requires this return. why?
return null;
}
为什么java编译器需要最终的return语句?
-Prasanna
答案 0 :(得分:7)
如果!someBoolean
,则调用method1
,但不返回任何内容。所以流程完全可以在最后一个声明中结束。
答案 1 :(得分:4)
因为如果你的布尔值不正确,你就不会返回任何东西。 Java要求所有方法都返回相应的值类型(在本例中为MyObject
)。
答案 2 :(得分:3)
您需要修改代码:
public MyObject method1() {
boolean someBoolean = true;
MyObject obj = ...;
if(!someBoolean) return method1();
else return obj;
}
最初,如果!someBoolean
你的if语句没有返回任何内容,它只调用method1()
并忽略了结果。