Class WhileClosure<E>

java.lang.Object
org.apache.commons.collections4.functors.WhileClosure<E>
All Implemented Interfaces:
Closure<E>

public class WhileClosure<E> extends Object implements Closure<E>
Closure implementation that executes a closure repeatedly until a condition is met, like a do-while or while 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 Details

    • WhileClosure

      public WhileClosure(Predicate<? super E> predicate, Closure<? super E> closure, boolean doLoop)
      Constructor that performs no validation. Use whileClosure if you want that.
      Parameters:
      predicate - the predicate used to evaluate when the loop terminates, not null
      closure - the closure to execute, not null
      doLoop - true to act as a do-while loop, always executing the closure once
  • Method Details

    • whileClosure

      public static <E> Closure<E> whileClosure(Predicate<? super E> predicate, Closure<? super E> closure, boolean doLoop)
      Factory method that performs validation.
      Type Parameters:
      E - the type that the closure acts on
      Parameters:
      predicate - the predicate used to evaluate when the loop terminates, not null
      closure - the closure to execute, not null
      doLoop - true to act as a do-while loop, always executing the closure once
      Returns:
      the while closure
      Throws:
      NullPointerException - if the predicate or closure is null
    • execute

      public void execute(E input)
      Executes the closure until the predicate is false.
      Specified by:
      execute in interface Closure<E>
      Parameters:
      input - the input object
    • getClosure

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

      public Predicate<? super E> getPredicate()
      Gets the predicate in use.
      Returns:
      the predicate
      Since:
      3.1
    • isDoLoop

      public boolean isDoLoop()
      Is the loop a do-while loop.
      Returns:
      true is do-while, false if while
      Since:
      3.1