1

TIME = 0,用户调用一个在 10 秒后设置标志的方法。(在TIME = 10

如果用户再次在标志处调用该方法,TIME = 2则不应将其设置为TIME = 10,而应设置为TIME = 12

boolean myFlag; // initializes to false
private Timer timer;

public void setFlag() {
    // remove old timer if there was one
    if (timer != null) { timer.cancel(); timer = null; }

    // set the new timer
    timer = new Timer();
    TimerTask tt = new TimerTask() {
        @Override
        public void run() { myFlag = true; }
    };
    timer.schedule(tt, 10000);
}

有没有更简洁的方法来实现这个“更新调度时间”模型?例子值得赞赏。

4

1 回答 1

-1

我会简单地保持不变,但几乎没有改变。
始终将变量声明为应在首次使用时声明和初始化变量。

public void setFlag() {
    Timer timer;
    timer = new Timer();
    // remove old timer if there was one
    if (timer != null) { timer.cancel(); }

    // set the new timer
    TimerTask tt = new TimerTask() {
        @Override
        public void run() { setFlag(); }
    };
    timer.schedule(tt, 10000);
}
于 2013-03-20T13:53:52.993 回答