-4
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

4

3 回答 3

7

如果!someBoolean, thenmethod1被调用,但没有返回任何内容。因此,flow 完全可能以最后一个语句结束。

于 2012-11-05T22:04:41.650 回答
4

因为如果您的布尔值不正确,您将不会返回任何内容。Java 要求所有方法都返回其对应的值类型(在本例中为MyObject)。

于 2012-11-05T22:05:02.730 回答
3

您需要修改您的代码:

public MyObject method1() {
  boolean someBoolean = true;
  MyObject obj = ...;

  if(!someBoolean) return method1();
  else return obj;
}

最初,您的 if 语句没有返回任何 if !someBoolean,它只是调用method1()并忽略了结果。

于 2012-11-05T22:06:04.540 回答