[英]How do I now the generic wrapped value on a Property Change Listener on Java Fx?
我有以下代碼:
circle2.radiusProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
System.out.println("Change detected for " + observable);
circle1.setRadius(newValue.doubleValue());
}
});
final IntegerProperty lapCounterProperty = new SimpleIntegerProperty();
pathTransition.currentTimeProperty().addListener(new ChangeListener<Duration>() {
@Override
public void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue) {
}
});
我怎么知道ChangeListener<>
的類型參數應該是什么?
addListener
方法來自ObservableValue<T>
,它定義了
void addListener(ChangeListener<? super T> listener)
void changed(ObservableValue<? extends S> observable, S oldValue, S newValue)
保持簡單(通常沒有理由不這樣做),如果您擁有ObjectProperty<Duration>
( PathTransition#duration
就是這樣),則需要使用ChangeListener<Duration>
,該方法將changed
簽名:
void changed(ObservableValue<? extends Duration> observable, Duration oldValue, Duration newValue)
但也可以使用ChangeListener<T>
對於任何T
其的超類型Duration
( Object
,例如),而changed
收聽者的方法可以接受ObservableValue<T>
對於任何T
延伸持續時間。
因此,簡短的答案是-如果您沒有充分的理由不這樣做,請始終為它的ChangeListener
使用與ObservableValue
相同的類型參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.