我在互联网上发现了一些javaFX代码甚至没有编译。为什么ReadOnlyDoubleProperty不是Double?
tableView.widthProperty().addListener(new ChangeListener<Double>(){
@Override
public void changed(final ObservableValue<? extends Double> observableValue, final Double aDouble, final Double aDouble2) {
//To change body of implemented methods use File | Settings | File Templates.
}
});
通过的IntelliJ所示的错误是:
无法解析方法“的addListener(javafx.beans.value.ChangeListener < 'java.lang.Double中>)'
在另一方面,这编译和工作很好。
tableView.widthProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(final ObservableValue<? extends Number> observableValue, final Number number, final Number number2) {
//To change body of implemented methods use File | Settings | File Templates.
}
});
正如你可以在这里看到,唯一的区别是,新的ChangeListener使用数量,而不是一个双(延伸数)。
WidthProperty是一个ReadOnlyDoubleProperty,它扩展了DoubleExpression并实现了ReadOnlyProperty <'java.lang.Number>。
这可能是基本的Java,但我真的不明白为什么它不编译,但为别人做。
'ReadOnlyDoubleProperty'实现'ObservableValue',它需要'ChangeListener <?超级数字>',而'Double'不是数字的超级类别。 –
assylias