Java 的 TimerTask 运行() 函数在内部调用特征函数时未被调用

Java's TimerTask run() function not called when calling trait function inside

我有以下代码:

trait IntervalUpdate {

  val updateInterval: Long

  def onUpdateTask(): Unit

  val timer: Timer = new Timer()


  val timerTask = new TimerTask {
    override def run(): Unit =  onUpdateTask()
  }

  timer.scheduleAtFixedRate(timerTask, updateInterval, updateInterval)
}

我将此特征混合到一些 类 中并覆盖了 onUpdateTask 方法。

问题是当我这样做时,run() 函数从未被调用过。

但是如果我做类似的事情:override def run(): Unit = println("message")然后它被调用。

我觉得这与 TimerTaskTimer 使用 Jave 代码并尝试使用 mixin 有关,但我认为这应该可行。

非常感谢任何帮助。

我让它工作了。我将代码更改为:

trait IntervalUpdate {

  val updateInterval: Long

  def onUpdateTask:() => Unit

  val timer: Timer = new Timer()


  val timerTask = new TimerTask {
    override def run(): Unit =  onUpdateTask()
  }

  timer.scheduleAtFixedRate(timerTask, updateInterval, updateInterval)
}