Module javafx.base
Package javafx.beans.value

## Class WeakChangeListener<T>

- java.lang.Object
- - javafx.beans.value.WeakChangeListener<T>

- Type Parameters:
    `T` - The type of the observed value
  All Implemented Interfaces:
    `ChangeListener<T>`, `WeakListener`

      public final class WeakChangeListener<T>
      extends Object
      implements ChangeListener<T>, WeakListener

  A `WeakChangeListener` can be used if an `ObservableValue` should only maintain a weak reference to the listener. This helps to avoid memory leaks which can occur if observers are not unregistered from observed objects after use.

  `WeakChangeListener` instances are created by passing in the original `ChangeListener`. The `WeakChangeListener` should then be registered to listen for changes of the observed object.

  Note: You have to keep a reference to the `ChangeListener` that was passed in for as long as it is in use, otherwise it will be garbage collected too soon.

  Since:
    JavaFX 2.0
  See Also:
    `ChangeListener`, `ObservableValue`

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `WeakChangeListener​(ChangeListener<T> listener)` | The constructor of `WeakChangeListener`.

  - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `changed​(ObservableValue<? extends T> observable, T oldValue, T newValue)` | This method needs to be provided by an implementation of `ChangeListener`.
    `boolean` | `wasGarbageCollected()` | Returns `true` if the linked listener was garbage-collected.

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

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

- - ### Constructor Detail

    - #### WeakChangeListener

          public WeakChangeListener​(ChangeListener<T> listener)

      The constructor of `WeakChangeListener`.
      Parameters:
        `listener` - The original listener that should be notified

  - ### Method Detail

    - #### wasGarbageCollected

          public boolean wasGarbageCollected()

      Returns `true` if the linked listener was garbage-collected. In this case, the listener can be removed from the observable.
      Specified by:
        `wasGarbageCollected` in interface `WeakListener`
      Returns:
        `true` if the linked listener was garbage-collected.

    - #### changed

          public void changed​(ObservableValue<? extends T> observable,
                              T oldValue,
                              T newValue)

      This method needs to be provided by an implementation of `ChangeListener`. It is called if the value of an `ObservableValue` changes.

      In general, it is considered bad practice to modify the observed value in this method.

      Specified by:
        `changed` in interface `ChangeListener<T>`
      Parameters:
        `observable` - The `ObservableValue` which value changed
        `oldValue` - The old value
        `newValue` - The new value