當試圖使用Scala 2.8.1/2.0了JavaFx公測編譯下面的代碼與Java Scala的編譯錯誤參數化的構造和參數化界面
new KeyValue(circle.translateYProperty, random() * height)
我得到以下錯誤:
[error] found : javafx.beans.property.DoubleProperty
[error] required: javafx.beans.value.WritableValue[Any]
[error] new KeyValue(circle.translateYProperty, random() * height)
[error] ^
[error] one error found
而這條線被編譯就好了:
new KeyValue(circle.translateXProperty.asInstanceOf[WritableValue[Any]], random() * width)
我查了鍵值構造函數,它具有以下特徵:
public <T> KeyValue(javafx.beans.value.WritableValue<T> tWritableValue, T t) { /* compiled code */ }
circle.translateXProperty返回DoubleProperty它實現了以下接口:
public interface WritableNumberValue extends javafx.beans.value.WritableValue<java.lang.Number>
會是怎樣更好的解決方案比鑄造使它編譯?
你試過明確指定類型? 'new KeyValue [Any](circle ...)' – agilesteel
是的,我試過這個,但它說_KeyValue不採取類型parameters_(類_KeyValue_不參數化,只有構造函數) – Stas
另外我不認爲這會改變任何東西 - 從錯誤信息中你可以看到編譯已經推斷出'Any'作爲'T'的邊界。 –