正确的方法是匿名继承TimerTask,在run方法中保持对'this'的引用

时间:2011-04-27 08:49:20

标签: java

我将TimerTask与一个匿名的“具体”类子类化,这样:

public void setTimedTask() {
    /* Note: 'this' implements an interface called UpdateIndicatorsReceiver */
    final UpdateIndicatorsReceiver receiver = this;
    final TimerTask timerTask = new TimerTask() {
        @Override
        public void run() {
            /* The interface UpdateIndicatorsReceiver has an updateIndicators method */
            receiver.updateIndicators();
        }
    };
    /* Code to actually set the timer.... */
}

请注意声明名为final的本地receiver字段并将其设置为this的奇怪之处。是否有更简洁的方法来获取this的不变更引用,以便在匿名类的run方法中使用它?

2 个答案:

答案 0 :(得分:1)

UpdateIndicatorsReceiver.this.updateIndicators();

答案 1 :(得分:1)

这应该是不必要的;你应该直接调用updateIndicators()

即:

public void run() {
    updateIndicators();
}

无需receiver引用。这为我编译。