为什么Java编译器需要返回值?

时间:2012-11-05 22:03:32

标签: java

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

3 个答案:

答案 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()并忽略了结果。