Module javafx.base
Package javafx.beans.value

# Class ObservableValueBase<T>

java.lang.Object
javafx.beans.value.ObservableValueBase<T>

All Implemented Interfaces:
  `Observable`, `ObservableValue<T>`

public abstract class ObservableValueBase<T> extends Object implements ObservableValue<T>
A convenience class for creating implementations of `ObservableValue`. It contains all of the infrastructure support for value invalidation- and change event notification. This implementation can handle adding and removing listeners while the observers are being notified, but it is not thread-safe.

Since:
  JavaFX 2.0

## Constructor Summary

Constructors
Constructor
Description
`ObservableValueBase()`

## Method Summary

Modifier and Type
Method
Description
`void`
`addListener(InvalidationListener listener)`
Adds an `InvalidationListener` which will be notified whenever the `Observable` becomes invalid.
`void`
`addListener(ChangeListener<? super T> listener)`
Adds a `ChangeListener` which will be notified whenever the value of the `ObservableValue` changes.
`protected void`
`fireValueChangedEvent()`
Notify the currently registered observers of a value change.
`void`
`removeListener(InvalidationListener listener)`
Removes the given listener from the list of listeners, that are notified whenever the value of the `Observable` becomes invalid.
`void`
`removeListener(ChangeListener<? super T> listener)`
Removes the given listener from the list of listeners that are notified whenever the value of the `ObservableValue` changes.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface javafx.beans.value.ObservableValue

`getValue`

## Constructor Details

### ObservableValueBase

public ObservableValueBase()

## Method Details

### addListener

public void addListener(InvalidationListener listener)
Adds an `InvalidationListener` which will be notified whenever the `Observable` becomes invalid. If the same listener is added more than once, then it will be notified more than once. That is, no check is made to ensure uniqueness.

Note that the same actual `InvalidationListener` instance may be safely registered for different `Observables`.

The `Observable` stores a strong reference to the listener which will prevent the listener from being garbage collected and may result in a memory leak. It is recommended to either unregister a listener by calling `removeListener` after use or to use an instance of `WeakInvalidationListener` avoid this situation.

Specified by:
  `addListener` in interface `Observable`
Parameters:
  `listener` - The listener to register
See Also:
  - `Observable.removeListener(InvalidationListener)`

### addListener

public void addListener(ChangeListener<? super T> listener)
Adds a `ChangeListener` which will be notified whenever the value of the `ObservableValue` changes. If the same listener is added more than once, then it will be notified more than once. That is, no check is made to ensure uniqueness.

Note that the same actual `ChangeListener` instance may be safely registered for different `ObservableValues`.

The `ObservableValue` stores a strong reference to the listener which will prevent the listener from being garbage collected and may result in a memory leak. It is recommended to either unregister a listener by calling `removeListener` after use or to use an instance of `WeakChangeListener` avoid this situation.

Specified by:
  `addListener` in interface `ObservableValue<T>`
Parameters:
  `listener` - The listener to register
See Also:
  - `ObservableValue.removeListener(ChangeListener)`

### removeListener

public void removeListener(InvalidationListener listener)
Removes the given listener from the list of listeners, that are notified whenever the value of the `Observable` becomes invalid.

If the given listener has not been previously registered (i.e. it was never added) then this method call is a no-op. If it had been previously added then it will be removed. If it had been added more than once, then only the first occurrence will be removed.

Specified by:
  `removeListener` in interface `Observable`
Parameters:
  `listener` - The listener to remove
See Also:
  - `Observable.addListener(InvalidationListener)`

### removeListener

public void removeListener(ChangeListener<? super T> listener)
Removes the given listener from the list of listeners that are notified whenever the value of the `ObservableValue` changes.

If the given listener has not been previously registered (i.e. it was never added) then this method call is a no-op. If it had been previously added then it will be removed. If it had been added more than once, then only the first occurrence will be removed.

Specified by:
  `removeListener` in interface `ObservableValue<T>`
Parameters:
  `listener` - The listener to remove
See Also:
  - `ObservableValue.addListener(ChangeListener)`

### fireValueChangedEvent

protected void fireValueChangedEvent()
Notify the currently registered observers of a value change. This implementation will ignore all adds and removes of observers that are done while a notification is processed. The changes take effect in the following call to fireValueChangedEvent.