paramétrisé Lorsque vous essayez de compiler le code suivant avec Scala 2.8.1/JavaFX 2.0 betaerreur de compilation Scala avec le constructeur et l'interface Java paramétrées
new KeyValue(circle.translateYProperty, random() * height)
Je reçois l'erreur suivante:
[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
Alors que cette ligne est compilée très bien:
new KeyValue(circle.translateXProperty.asInstanceOf[WritableValue[Any]], random() * width)
J'ai vérifié le constructeur KeyValue et il a la signature suivante:
public <T> KeyValue(javafx.beans.value.WritableValue<T> tWritableValue, T t) { /* compiled code */ }
circle.translateXProperty retours DoubleProperty qui implémente l'interface suivante:
public interface WritableNumberValue extends javafx.beans.value.WritableValue<java.lang.Number>
Quelle serait la solution plus élégante que la coulée de le faire compiler?
Avez-vous essayé spécifiant explicitement le type? 'new KeyValue [Any] (cercle ...)' – agilesteel
Oui, j'ai essayé mais ça dit _KeyValue ne prend pas de type paramètres_ (la classe _KeyValue_ n'est pas paramétrée, seul le constructeur est) – Stas
Aussi je ne pense pas que ça changerait quoi que ce soit - à partir du message d'erreur, vous pouvez voir que le compilé a déjà déduit 'Any' comme étant la limite de' T'. –