T
- ラップされた値の型。public interface ObservableValue<T> extends Observable
ObservableValue
は、値をラップし、値の変更を監視できるエンティティです。通常、このインタフェースは直接実装されませんが、サブインタフェースのいずれか(ObservableBooleanValue
など)が実装されます。
getValue()
を使用して、ObservableValue
の値をリクエストできます。
ObservableValue
の実装は、遅延評価をサポートする場合があります。つまり、変更後に値がすぐに再計算されず、遅れて次に値をリクエストするときに再計算されます。このライブラリのすべてのバインディングおよびプロパティは、遅延評価をサポートします。
ObservableValue
は、次の2つのタイプのイベントを生成します: 変更イベントと無効化イベント。変更イベントは、値が変更されたことを示します。現在の値が有効でなくなった場合、無効化イベントが生成されます。ObservableValue
が遅延評価をサポートする場合、値が遅延して評価されるので再計算されるまで無効な値が実際に変更されたかどうかわからないため、この区別は重要になります。このため、無効化イベントを即時実装および遅延実装に生成できますが、変更イベントの生成は即時評価が必要になります。
このクラスの実装は、イベント・ハンドラでの時間の大量消費を回避するためにできるだけ少ないイベントを生成する必要があります。このライブラリの実装は、最初の無効化イベントの発生時に無効とマークされます。値が再計算されて再度有効になるまで、追加の無効化イベントを生成しません。
次の2つのタイプのリスナーをObservableValue
にアタッチできます: 無効化イベントをリスニングするInvalidationListener
と変更イベントをリスニングするChangeListener
。
重要な注意: ObservableValue
の実装が遅延評価をサポートしていても、ChangeListener
のアタッチでは、即時計算を適用します。
修飾子と型 | メソッドと説明 |
---|---|
void |
addListener(ChangeListener<? super T> listener)
ObservableValue の値が変更されるたびに通知されるChangeListener を追加します。 |
T |
getValue()
この
ObservableValue の現在の値を返します |
void |
removeListener(ChangeListener<? super T> listener)
ObservableValue の値が変更されるたびに通知されるリスナーのリストから指定されたリスナーを削除します。 |
addListener、removeListener
void addListener(ChangeListener<? super T> listener)
ObservableValue
の値が変更されるたびに通知されるChangeListener
を追加します。同じリスナーが複数回追加される場合、複数回通知されます。つまり、一意性を確認するためにチェックが実行されません。
実際の同じChangeListener
インスタンスが異なるObservableValues
に対して安全に登録される場合があるので注意してください。
ObservableValue
は、リスナーの強参照を格納するため、リスナーはガベージ・コレクションされず、メモリー・リークが発生する可能性があります。使用後にremoveListener
を呼び出してリスナーを登録解除するか、WeakChangeListener
のインスタンスを使用してこの状況を回避することをお薦めします。
listener
- 登録するリスナーNullPointerException
- リスナーがnullである場合removeListener(ChangeListener)
void removeListener(ChangeListener<? super T> listener)
ObservableValue
の値が変更されるたびに通知されるリスナーのリストから指定されたリスナーを削除します。
指定されたリスナーが以前に登録されていない場合(つまり、一度も追加されていなかった場合)、このメソッドの呼出しはno-opです。以前に追加されたことがある場合は削除されます。複数回追加された場合、最初の発生のみ削除されます。
listener
- 削除するリスナーNullPointerException
- リスナーがnullである場合addListener(ChangeListener)
T getValue()
ObservableValue
の現在の値を返しますCopyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.