Class Functions

java.lang.Object
org.apache.commons.lang3.function.Functions

public final class Functions extends Object
Factory for Function.
Since:
3.14.0
  • Method Summary

    Modifier and Type
    Method
    Description
    static <T, R> R
    apply(Function<T,R> function, T object)
    Applies the Function on the object if the function is not null.
    static <T, R> R
    applyNonNull(T value, Function<? super T,? extends R> mapper)
    Applies a value to a function if the value isn't null, otherwise the method returns null.
    static <T, U, R> R
    applyNonNull(T value1, Function<? super T,? extends U> mapper1, Function<? super U,? extends R> mapper2)
    Applies values to a chain of functions, where a null can short-circuit each step.
    static <T, U, V, R> R
    applyNonNull(T value1, Function<? super T,? extends U> mapper1, Function<? super U,? extends V> mapper2, Function<? super V,? extends R> mapper3)
    Applies values to a chain of functions, where a null can short-circuit each step.
    static <T, R> Function<T,R>
    function(Function<T,R> function)
    Starts a fluent chain like function(foo::bar).andThen(...).andThen(...).apply(...);

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Method Details

    • apply

      public static <T, R> R apply(Function<T,R> function, T object)
      Applies the Function on the object if the function is not null. Otherwise, does nothing and returns null.
      Type Parameters:
      T - the type of the argument the function applies.
      R - the type of the result the function returns.
      Parameters:
      function - the function to apply.
      object - the object to apply the function.
      Returns:
      the value the function returns if the function is not null; null otherwise.
      Since:
      3.15.0
    • applyNonNull

      public static <T, R> R applyNonNull(T value, Function<? super T,? extends R> mapper)
      Applies a value to a function if the value isn't null, otherwise the method returns null. If the value isn't null then return the result of the applying function.
      
       Functions.applyNonNull("a", String::toUpperCase)  = "A"
       Functions.applyNonNull(null, String::toUpperCase) = null
       Functions.applyNonNull("a", s -> null)            = null
       

      Useful when working with expressions that may return null as it allows a single-line expression without using temporary local variables or evaluating expressions twice. Provides an alternative to using Optional that is shorter and has less allocation.

      Type Parameters:
      T - The type of the input of this method and the function.
      R - The type of the result of the function and this method.
      Parameters:
      value - The value to apply the function to, may be null.
      mapper - The function to apply, must not be null.
      Returns:
      The result of the function (which may be null) or null if the input value is null.
      Since:
      3.19.0
      See Also:
    • applyNonNull

      public static <T, U, R> R applyNonNull(T value1, Function<? super T,? extends U> mapper1, Function<? super U,? extends R> mapper2)
      Applies values to a chain of functions, where a null can short-circuit each step. A function is only applied if the previous value is not null, otherwise this method returns null.
      
       Functions.applyNonNull(" a ", String::toUpperCase, String::trim) = "A"
       Functions.applyNonNull(null, String::toUpperCase, String::trim)  = null
       Functions.applyNonNull(" a ", s -> null, String::trim)           = null
       Functions.applyNonNull(" a ", String::toUpperCase, s -> null)    = null
       

      Useful when working with expressions that may return null as it allows a single-line expression without using temporary local variables or evaluating expressions twice. Provides an alternative to using Optional that is shorter and has less allocation.

      Type Parameters:
      T - The type of the input of this method and the first function.
      U - The type of the result of the first function and the input to the second function.
      R - The type of the result of the second function and this method.
      Parameters:
      value1 - The value to apply the functions to, may be null.
      mapper1 - The first function to apply, must not be null.
      mapper2 - The second function to apply, must not be null.
      Returns:
      The result of the final function (which may be null) or null if the input value or any intermediate value is null.
      Since:
      3.19.0
      See Also:
    • applyNonNull

      public static <T, U, V, R> R applyNonNull(T value1, Function<? super T,? extends U> mapper1, Function<? super U,? extends V> mapper2, Function<? super V,? extends R> mapper3)
      Applies values to a chain of functions, where a null can short-circuit each step. A function is only applied if the previous value is not null, otherwise this method returns null.
      
       Functions.applyNonNull(" abc ", String::toUpperCase, String::trim, StringUtils::reverse) = "CBA"
       Functions.applyNonNull(null, String::toUpperCase, String::trim, StringUtils::reverse)    = null
       Functions.applyNonNull(" abc ", s -> null, String::trim, StringUtils::reverse)           = null
       Functions.applyNonNull(" abc ", String::toUpperCase, s -> null, StringUtils::reverse)    = null
       Functions.applyNonNull(" abc ", String::toUpperCase, String::trim, s -> null)            = null
       

      Useful when working with expressions that may return null as it allows a single-line expression without using temporary local variables or evaluating expressions twice. Provides an alternative to using Optional that is shorter and has less allocation.

      Type Parameters:
      T - The type of the input of this method and the first function.
      U - The type of the result of the first function and the input to the second function.
      V - The type of the result of the second function and the input to the third function.
      R - The type of the result of the third function and this method.
      Parameters:
      value1 - The value to apply the first function, may be null.
      mapper1 - The first function to apply, must not be null.
      mapper2 - The second function to apply, must not be null.
      mapper3 - The third function to apply, must not be null.
      Returns:
      The result of the final function (which may be null) or null if the input value or any intermediate value is null.
      Since:
      3.19.0
      See Also:
    • function

      public static <T, R> Function<T,R> function(Function<T,R> function)
      Starts a fluent chain like function(foo::bar).andThen(...).andThen(...).apply(...);
      Type Parameters:
      T - Input type.
      R - Return type.
      Parameters:
      function - the argument to return.
      Returns:
      the argument