0

おわりに IDE(Eclipse)関連のようです。同じコードで別の名前の別のクラスを作成しましたが、正常に動作します。クリーニング、再起動などを試しました。うーん。

更新されたテスト コード私はここで困惑しています。問題を再現するコードをこれに絞り込みました。

これを実行するmMemberVar = 2;と、return now.add(Calendar.DAY_OF_YEAR, 1);がスキップされます。次にスキップしますreturn null;

Serializableこれは、それ自体のメンバー変数を変更することで何か奇妙なことが原因ですか? 何も見つかりません。

public class Alarm implements Serializable {
    int mMemberVar = 0;
    public Calendar nextTime() {
        Calendar now = Calendar.getInstance();
        if (true) {
            if (true) {
                if (true) {
                    mMemberVar = 2;
                    // return is skipped
                    now.add(Calendar.DAY_OF_YEAR, 1);
                    return now;
                }
            }
            now.add(Calendar.DAY_OF_YEAR, 2);
            return now;
        }
        return null;
    }
}
4

3 に答える 3

4

おそらく、あなたの IDE は、あなたがここに書いたコードを再コンパイルさえしていないでしょう。Calendar.addは何も返さないため、表示しているコードをまったくコンパイルできないと推測しています。

したがって、基本的には、常に null を返す古いバージョンのコードを実行しています。IDE で「クリーン」してから「再構築」または同様のアクションを実行してみてください。

于 2012-06-19T05:18:54.560 に答える
3

addCalendarのメソッドは を返しますvoidadd(...)戻り行の前に and を配置する必要がありreturn now;ます。

于 2012-06-19T05:19:19.643 に答える
1

以下のようなコードを持つことができます... 戻り値を追加します...

import java.io.Serializable;
import java.util.Calendar;

public class Alarm implements Serializable {
    int mMemberVar = 0;
    public Calendar nextTime() {
        Calendar now = Calendar.getInstance();
        if (true) {
            if (true) {
                if (true) {
                    mMemberVar = 2;
                    // return is skipped
                    now.add(Calendar.DAY_OF_YEAR, 1);
                    return now;
                }
            }
            now.add(Calendar.DAY_OF_YEAR, 2);
            return now;
        }
        return null;
    }
}
于 2012-06-19T05:28:31.980 に答える