我有以下代码:
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")
,则会调用它。
我觉得这与TimerTask
和Timer
有关Jave代码并尝试使用mixins有关,但我认为这应该有效。
非常感谢任何帮助。
答案 0 :(得分:1)
我得到了它的工作。我将代码更改为:
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)
}