Java';在内部调用trait函数时未调用s TimerTask run()函数
我有以下代码:Java';在内部调用trait函数时未调用s TimerTask run()函数,java,scala,timer,timertask,traits,Java,Scala,Timer,Timertask,Traits,我有以下代码: 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, up
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代码并尝试使用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)
}