【问题标题】:Java's TimerTask run() function not called when calling trait function inside内部调用 trait 函数时未调用 Java 的 TimerTask run() 函数
【发布时间】:2015-08-01 06:14:03
【问题描述】:

我有以下代码:

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 代码并尝试使用 mixins 有关,但我认为这应该可行。

非常感谢任何帮助。

【问题讨论】:

    标签: java scala timer timertask traits


    【解决方案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)
    }
    

    【讨论】:

      猜你喜欢
      • 2012-01-12
      • 2017-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多