# Class ObservableValueBase<T>

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

Type Parameters:
  `T` - the observable value type

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()`
  Creates a default `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 declared in class java.lang.Object

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

  ### Methods declared in interface javafx.beans.Observable

  `subscribe`

  ### Methods declared in interface javafx.beans.value.ObservableValue

  `flatMap, getValue, map, orElse, subscribe, subscribe, when`

- ## Constructor Details

  - ### ObservableValueBase

    public ObservableValueBase()
    Creates a default `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.