Scala 2.8.1 /JavaFx2.0ベータ版で次のコードをコンパイルしようとした場合
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)
KeyValueコンストラクターを確認したところ、次の署名があります。
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>
コンパイルするためにキャストするよりもエレガントなソリューションは何でしょうか?