I did not find a reference to the official or generally accepted definition of the term "form of function", so the following is my own interpretation.
The "form of the function" is represented by its "type signature" , including the return type , i.e. amount description:
- an ordered list / tuple of types of its parameters and
- his return type
(That is, basically, everything is about the function, except for the name of the function, parameter names and body.) I suspect that they did not use the term "signature" because it already has a different meaning in Java - it does not include the return type. Therefore, they came up with a new term.
In functional programming languages, "type signature" typically includes a return type. Signatures are useful for understanding what a function can do, so they are often written explicitly. For example, the signature (or “function form” in Java terms) for the new BiFunction can be written as (T, U) -> R , where the first part is a tuple representing a list of parameters, and the second part is the type of the return value,
Therefore, I do not agree with this other answer : I think that these types matter and are not predetermined. If they were rejected, then several types defined in this new namespace would have exactly the same form of function (for example, Supplier , Predicate , Function ). If this were so, then why would the documentation suggest explaining these new types with a mismatched concept of function forms? It does not make sense. (The answer has since been edited.)
Here are some more examples of functional type signatures for the new Java functional interfaces:
BiFunction<T,U,R>, (T, U) -> R BinaryOperator<T,U,R> (T, U) -> R BiPredicate<T,U> (T, U) -> boolean Consumer<T> T -> () note: `()` means `void` Function<T,R> T -> R IntFunction<R> int -> R Predicate<T> T -> boolean Supplier<R> () -> R UnaryOperator<T,R> T -> R