我試圖延長javax.swing.Timer中不被認可,但它只有一個構造函數,它是斯卡拉 - 方法構造
Timer(int delay, ActionListener listener)
我不希望我在斯卡拉子取一個Java ActionListener
在它的構造函數中。我在very old thread中讀到:「沒有辦法直接調用超類的構造函數;你必須傳遞你自己類的主構造函數」,所以它看起來像我堅持在主構造函數中使用ActionListener
。所以我增加了一個輔助構造這樣的:
case class TimerEvent (source: AnyRef) extends swing.event.Event
class ScalaTimer2 (delay: Int, listener: java.awt.event.ActionListener)
extends javax.swing.Timer(delay, listener) with swing.Publisher {
outer =>
def this(delay: Int) = {
this(delay, new java.awt.event.ActionListener {
def actionPerformed(e: java.awt.event.ActionEvent) {
publish(TimerEvent(outer)) // <-- publish not recogonized
}
})
// publish(TimerEvent(outer)) // <-- publish recognized here
}
}
不過,我得到一個編譯錯誤error: not found: value publish
...爲什麼?以及如何解決?
對於那些尋找到這個問題,意識到問題的SI-4842,其崩潰的編譯器:https://issues.scala-lang.org/browse/SI-4842 –