On this page

Functions

public final class org.apache.commons.lang3.function.Functions[source]

Factory for Function.

Since:

3.14.0

Methods

apply(Function, Object)

Applies the Function on the object if the function is not null.

applyNonNull(Object, Function)

Applies a value to a function if the value isn’t null, otherwise the method returns null.

applyNonNull(Object, Function, Function)

Applies values to a chain of functions, where a null can short-circuit each step.

applyNonNull(Object, Function, Function, Function)

Applies values to a chain of functions, where a null can short-circuit each step.

function(Function)

Starts a fluent chain like function(foo::bar).andThen(...).andThen(...).apply(...);

public static <T, R> R apply(Function<T, R> function, T object)[source]

Applies the Function on the object if the function is not null. Otherwise, does nothing and returns null.

Parameters:
  • function – The function to apply.

  • object – The object to apply the function.

Type parameters:
  • <T> – the type of the argument the function applies.

  • <R> – the type of the result the function returns.

Returns:

The value the function returns if the function is not null; null otherwise.

Since:

3.15.0

public static <T, R> R applyNonNull(T value, Function<? super T, ? extends R> mapper)[source]

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.

See also:
Since:

3.19.0

public static <T, U, R> R applyNonNull(T value1, Function<? super T, ? extends U> mapper1, Function<? super U, ? extends R> mapper2)[source]

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.

See also:
Since:

3.19.0

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)[source]

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.

See also:
Since:

3.19.0

public static <T, R> Function<T, R> function(Function<T, R> function)[source]

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