-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ステートメントを必要とするのですか?

-プラサナ

4

3 に答える 3

7

の場合!someBoolean、 thenmethod1が呼び出されますが、何も返されません。したがって、フローは完全にその最後のステートメントで終了する可能性があります。

于 2012-11-05T22:04:41.650 に答える
4

ブール値が true でない場合、何も返されないためです。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 に答える