インターネット上で、コンパイルすらできない javaFX のコードを見つけました。
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 が (Number を拡張した) Double ではなく Number を使用することです。
WidthProperty は、DoubleExpression を拡張し、ReadOnlyProperty<'java.lang.Number> を実装する ReadOnlyDoubleProperty です。
これは基本的なJavaかもしれませんが、なぜそれがコンパイルされないのか、私には本当に分かりません。