# Class ChainedClosure<T>

java.lang.Object
org.apache.commons.collections4.functors.ChainedClosure<T>

Type Parameters:
  `T` - the type of the input to the operation.

All Implemented Interfaces:
  `Serializable`, `Consumer<T>`, `Closure<T>`

public class ChainedClosure<T> extends Object implements Closure<T>, Serializable
Closure implementation that chains the specified closures together.

Since:
  3.0
See Also:
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ChainedClosure(Closure<? super T>... closures)`
  Constructor that performs no validation.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static <E> Closure<E>`
  `chainedClosure(Collection<? extends Closure<? super E>> closures)`
  Create a new Closure that calls each closure in turn, passing the result into the next closure.
  `static <E> Closure<E>`
  `chainedClosure(Closure<? super E>... closures)`
  Factory method that performs validation and copies the parameter array.
  `void`
  `execute(T input)`
  Execute a list of closures.
  `Closure<? super T>[]`
  `getClosures()`
  Gets the closures.

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

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

  ### Methods inherited from interface org.apache.commons.collections4.Closure

  `accept`

  ### Methods inherited from interface java.util.function.Consumer

  `andThen`

- ## Constructor Details

  - ### ChainedClosure

    public ChainedClosure(Closure<? super T>... closures)
    Constructor that performs no validation. Use `chainedClosure` if you want that.
    Parameters:
      `closures` - the closures to chain, copied, no nulls

- ## Method Details

  - ### chainedClosure

    public static <E> Closure<E> chainedClosure(Closure<? super E>... closures)
    Factory method that performs validation and copies the parameter array.
    Type Parameters:
      `E` - the type that the closure acts on
    Parameters:
      `closures` - the closures to chain, copied, no nulls
    Returns:
      the `chained` closure
    Throws:
      `NullPointerException` - if the closures array is null
      `NullPointerException` - if any closure in the array is null

  - ### chainedClosure

    public static <E> Closure<E> chainedClosure(Collection<? extends Closure<? super E>> closures)
    Create a new Closure that calls each closure in turn, passing the result into the next closure. The ordering is that of the iterator() method on the collection.
    Type Parameters:
      `E` - the type that the closure acts on
    Parameters:
      `closures` - a collection of closures to chain
    Returns:
      the `chained` closure
    Throws:
      `NullPointerException` - if the closures collection is null
      `NullPointerException` - if any closure in the collection is null

  - ### execute

    public void execute(T input)
    Execute a list of closures.
    Specified by:
      `execute` in interface `Closure<T>`
    Parameters:
      `input` - the input object passed to each closure

  - ### getClosures

    public Closure<? super T>[] getClosures()
    Gets the closures.
    Returns:
      a copy of the closures
    Since:
      3.1