java-修改成员变量会导致跳过行

java-修改成员变量会导致跳过行,java,Java,关闭它看起来与IDE(Eclipse)相关。我用相同的代码和不同的名称构建了一个单独的类,它工作得很好。尝试过清洁、重启等 更新的测试代码我在这里被难住了,我猜这是件愚蠢的事情。我已经将代码缩减到了这一步,它再现了这个问题 这将执行mMemberVar=2然后导致立即返回。添加(日历年的第1天)。然后跳到返回null 这是因为它是可序列化的,并且修改它自己的成员变量时有些奇怪吗?我在上面找不到任何东西 public class Alarm implements Serializable {

关闭它看起来与IDE(Eclipse)相关。我用相同的代码和不同的名称构建了一个单独的类,它工作得很好。尝试过清洁、重启等

更新的测试代码我在这里被难住了,我猜这是件愚蠢的事情。我已经将代码缩减到了这一步,它再现了这个问题

这将执行
mMemberVar=2
然后导致
立即返回。添加(日历年的第1天)。然后跳到
返回null

这是因为它是可序列化的,并且修改它自己的成员变量时有些奇怪吗?我在上面找不到任何东西

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;
    }
}

可能您的IDE甚至没有重新编译您在这里编写的代码。我猜这是因为没有返回任何内容,所以您显示的代码根本无法编译


所以基本上,您运行的是一个旧版本的代码,它总是返回null。尝试在IDE中执行“清理”然后“重建”或类似操作。

日历的
add
方法返回
void
。您应该将
add(…)
放在返回行之前,然后
立即返回取而代之。

您可以使用如下代码。。。添加返回无效

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;
    }
}

对不起大家。我现在犯的错误。添加(…)。我已经修复了测试代码,但它仍然存在。我也清理和重建了。@Kirk对不起,我不能重现这个问题。请参见:。尝试添加
System.out.println(“helloworld!”)
在该方法的开头,以确保代码已编译。它看起来与IDE(Eclipse)相关。我用相同的代码和不同的名称构建了一个单独的类,它工作得很好。尝试过清洁、重新启动等。你可能是对的,只需要找出如何彻底清洁它