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 Details

### WeakChangeListener

public WeakChangeListener(ChangeListener<T> listener)
The constructor of `WeakChangeListener`.

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.

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