# Class ForClosure<T>

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

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

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

public class ForClosure<T> extends Object implements Closure<T>
Closure implementation that calls another closure n times, like a for loop.

WARNING: from v4.1 onwards this class will not be serializable anymore in order to prevent potential remote code execution exploits. Please refer to COLLECTIONS-580 for more details.

Since:
  3.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ForClosure(int count, Closure<? super T> closure)`
  Constructor that performs no validation.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `execute(T input)`
  Executes the closure `count` times.
  `static <E> Closure<E>`
  `forClosure(int count, Closure<? super E> closure)`
  Factory method that performs validation.
  `Closure<? super T>`
  `getClosure()`
  Gets the closure.
  `int`
  `getCount()`
  Gets the count.

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

  - ### ForClosure

    public ForClosure(int count, Closure<? super T> closure)
    Constructor that performs no validation. Use `forClosure` if you want that.
    Parameters:
      `count` - the number of times to execute the closure
      `closure` - the closure to execute, not null

- ## Method Details

  - ### forClosure

    public static <E> Closure<E> forClosure(int count, Closure<? super E> closure)
    Factory method that performs validation.

    A null closure or zero count returns the `NOPClosure`. A count of one returns the specified closure.

    Type Parameters:
      `E` - the type that the closure acts on
    Parameters:
      `count` - the number of times to execute the closure
      `closure` - the closure to execute, not null
    Returns:
      the `for` closure

  - ### execute

    public void execute(T input)
    Executes the closure `count` times.
    Specified by:
      `execute` in interface `Closure<T>`
    Parameters:
      `input` - the input object

  - ### getClosure

    public Closure<? super T> getClosure()
    Gets the closure.
    Returns:
      the closure
    Since:
      3.1

  - ### getCount

    public int getCount()
    Gets the count.
    Returns:
      the count
    Since:
      3.1