# Class ObservableArrayBase<T extends ObservableArray<T>>

java.lang.Object
javafx.collections.ObservableArrayBase<T>

Type Parameters:
  `T` - actual array instance type

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

public abstract class ObservableArrayBase<T extends ObservableArray<T>> extends Object implements ObservableArray<T>
Abstract class that serves as a base class for `ObservableArray` implementations. The base class provides listener handling functionality by implementing `addListener` and `removeListener` methods. `fireChange(boolean, int, int)` method is provided for notifying the listeners.

Since:
  JavaFX 8.0
See Also:
  - `ObservableArray`
  - `ArrayChangeListener`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ObservableArrayBase()`
  Creates a default `ObservableArrayBase`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `final void`
  `addListener(InvalidationListener listener)`
  Adds an `InvalidationListener` which will be notified whenever the `Observable` becomes invalid.
  `final void`
  `addListener(ArrayChangeListener<T> listener)`
  Add a listener to this observable array.
  `protected final void`
  `fireChange(boolean sizeChanged, int from, int to)`
  Notifies all listeners of a change
  `final void`
  `removeListener(InvalidationListener listener)`
  Removes the given listener from the list of listeners, that are notified whenever the value of the `Observable` becomes invalid.
  `final void`
  `removeListener(ArrayChangeListener<T> listener)`
  Tries to remove a listener from this observable array.

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

  `clear, ensureCapacity, resize, size, trimToSize`

- ## Constructor Details

  - ### ObservableArrayBase

    public ObservableArrayBase()
    Creates a default `ObservableArrayBase`.

- ## Method Details

  - ### addListener

    public final void addListener(InvalidationListener listener)
    Description copied from interface: `Observable`
    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)`

  - ### removeListener

    public final void removeListener(InvalidationListener listener)
    Description copied from interface: `Observable`
    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)`

  - ### addListener

    public final void addListener(ArrayChangeListener<T> listener)
    Description copied from interface: `ObservableArray`
    Add a listener to this observable array.
    Specified by:
      `addListener` in interface `ObservableArray<T extends ObservableArray<T>>`
    Parameters:
      `listener` - the listener for listening to the array changes

  - ### removeListener

    public final void removeListener(ArrayChangeListener<T> listener)
    Description copied from interface: `ObservableArray`
    Tries to remove a listener from this observable array. If the listener is not attached to this array, nothing happens.
    Specified by:
      `removeListener` in interface `ObservableArray<T extends ObservableArray<T>>`
    Parameters:
      `listener` - a listener to remove

  - ### fireChange

    protected final void fireChange(boolean sizeChanged, int from, int to)
    Notifies all listeners of a change
    Parameters:
      `sizeChanged` - indicates size of array changed
      `from` - A beginning (inclusive) of an interval related to the change
      `to` - An end (exclusive) of an interval related to the change.