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的方法返回void. 你应该把它放在add(...)返回线之前,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 回答