0

戻り値の型が SomeObject であることを期待する以下のメソッドがあります。mapData() 関数は SomeObject を返します。1つの条件が満たされたらすぐにループから抜け出したいです。戻り値の型が見つからないため、コンパイル エラーが発生します。私の状態の問題を指摘していただけますか?

 public static SomeObject mapper(List<String> mylist) {
    Iterator iter = mylist.iterator();
    while (iter.hasNext()) {
        Object[] result = (Object[]) iter.next();
            if (condition){
                //dosomething
                return mapData(abc);
            }else if (condition) {
                //dosomething
                return mapData(def);
            }else {
                //dosomething
                return mapData(ghi);
            }
    }
  // Get compilation error due to no return type at this position
}
4

3 に答える 3

4

whileループが実行されないとどうなるか想像してみてください。これは、リストが空の場合に発生します。その場合、メソッドは何も返さないため、エラーが発生します。

return ステートメントを追加するだけです。

return null;

あなたのwhileループの後。または、このメソッドによって返される値のチェックをSomeObject行っていない場合は、の既定のインスタンスを返します。null

于 2013-06-21T22:05:16.403 に答える
3

コンパイラでは、考えられるすべてのコード パスが次のいずれかである必要があります。

  • return価値
  • throw例外

プログラムのコンテキストでより意味のある方を行う必要があります。あなたの場合、これらのステートメントの1つをメソッドの最後に追加することを意味します。

于 2013-06-21T22:06:08.247 に答える