Interface Function2<A,B,R>

Type Parameters:
A - The type of the first argument to the function.
B - The type of the second argument to the function.
R - The type of the result of the function.
All Known Subinterfaces:
ThrowingFunction2<A,B,R>
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface Function2<A,B,R>
A functional interface representing a function that accepts two arguments and produces a result.

This interface extends the standard Java Function pattern to support two-argument functions. It's useful when you need to pass functions with two parameters to methods that expect functional interfaces, such as in stream operations, builders, or callback patterns.

Features:
  • Functional interface - can be used with lambda expressions and method references
  • Composition support - provides andThen(Function) for function chaining
  • Type-safe - generic type parameters ensure compile-time type safety
Use Cases:
  • Two-argument transformations in functional programming patterns
  • Builder methods that accept two-parameter functions
  • Stream operations requiring two-argument functions
  • Callback patterns with two parameters
Usage:

// Lambda expression Function2<String,Integer,String> concat = (s, i) -> s + "-" + i; String result = concat.apply("prefix", 42); // Returns "prefix-42" // Method reference Function2<String,String,Boolean> equals = String::equals; boolean match = equals.apply("hello", "hello"); // Returns true // Function composition Function2<Integer,Integer,Integer> add = (a, b) -> a + b; Function2<Integer,Integer,String> addAndFormat = add.andThen(Object::toString); String sum = addAndFormat.apply(5, 3); // Returns "8"

See Also:
  • Method Summary

    Modifier and Type
    Method
    Description
    default <V> Function2<A,B,V>
    andThen(Function<? super R,? extends V> after)
    Returns a composed function that first applies this function to its input, and then applies the after function to the result.
    apply(A a, B b)
    Applies this function to the given arguments.
  • Method Details

    • andThen

      default <V> Function2<A,B,V> andThen(Function<? super R,? extends V> after)
      Returns a composed function that first applies this function to its input, and then applies the after function to the result.

      This method enables function composition, allowing you to chain multiple transformations together.

      Example:

      Function2<Integer,Integer,Integer> multiply = (a, b) -> a * b; Function2<Integer,Integer,String> multiplyAndFormat = multiply.andThen(n -> "Result: " + n); String result = multiplyAndFormat.apply(6, 7); // Returns "Result: 42"

      Type Parameters:
      V - The type of output of the after function, and of the composed function.
      Parameters:
      after - The function to apply after this function is applied. Must not be null.
      Returns:
      A composed function that first applies this function and then applies the after function.
      Throws:
      NullPointerException - if after is null.
    • apply

      R apply(A a, B b)
      Applies this function to the given arguments.
      Example:

      Function2<String,Integer,String> repeat = (s, n) -> s.repeat(n); String result = repeat.apply("ha", 3); // Returns "hahaha"

      Parameters:
      a - The first function argument.
      b - The second function argument.
      Returns:
      The function result.