# Class WeakListChangeListener<E>

java.lang.Object
javafx.collections.WeakListChangeListener<E>

Type Parameters:
  `E` - The type of the observed value

All Implemented Interfaces:
  `WeakListener`, `ListChangeListener<E>`

public final class WeakListChangeListener<E> extends Object implements ListChangeListener<E>, WeakListener
A `WeakListChangeListener` can be used, if an `ObservableList` should only maintain a weak reference to the listener. This helps to avoid memory leaks, that can occur if observers are not unregistered from observed objects after use.

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

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

Since:
  JavaFX 2.1
See Also:
  - `ListChangeListener`
  - `ObservableList`
  - `WeakListener`

- ## Nested Class Summary

  ### Nested classes/interfaces declared in interface javafx.collections.ListChangeListener

  `ListChangeListener.Change<E>`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `WeakListChangeListener(ListChangeListener<E> listener)`
  The constructor of `WeakListChangeListener`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `onChanged(ListChangeListener.Change<? extends E> change)`
  Called after a change has been made to an ObservableList.
  `boolean`
  `wasGarbageCollected()`
  Returns `true` if the linked listener was garbage-collected.

  ### Methods declared in class java.lang.Object

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

- ## Constructor Details

  - ### WeakListChangeListener

    public WeakListChangeListener(ListChangeListener<E> listener)
    The constructor of `WeakListChangeListener`.
    Parameters:
      `listener` - The original listener that should be notified

- ## Method Details

  - ### 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.

  - ### onChanged

    public void onChanged(ListChangeListener.Change<? extends E> change)
    Called after a change has been made to an ObservableList.
    Specified by:
      `onChanged` in interface `ListChangeListener<E>`
    Parameters:
      `change` - an object representing the change that was done
    See Also:
      - `ListChangeListener.Change`