In Java 8+, a functional interface is an interface that has just one abstract method (aside from the methods of Object). See JLS §9.8. Functional Interfaces.
|Parameter Types|Return Type|Interface
|---|---|---|---|---|---|---|---|---|---
|()|void|Runnable
|()|T|Supplier
|()|boolean|BooleanSupplier
|()|int|IntSupplier
|()|long|LongSupplier
|()|double|DoubleSupplier
|(T)|void|Consumer
|(T)|T|UnaryOperator
|(T)|R|Function<T,R>
|(T)|boolean|Predicate
|(T)|int|ToIntFunction
|(T)|long|ToLongFunction
|(T)|double|ToDoubleFunction
|(T, T)|T|BinaryOperator
|(T, U)|void|BiConsumer<T,U>
|(T, U)|R|BiFunction<T,U,R>
|(T, U)|boolean|BiPredicate<T,U>
|(T, U)|int|ToIntBiFunction<T,U>
|(T, U)|long|ToLongBiFunction<T,U>
|(T, U)|double|ToDoubleBiFunction<T,U>
|(T, int)|void|ObjIntConsumer
|(T, long)|void|ObjLongConsumer
|(T, double)|void|ObjDoubleConsumer
|(int)|void|IntConsumer
|(int)|R|IntFunction
|(int)|boolean|IntPredicate
|(int)|int|IntUnaryOperator
|(int)|long|IntToLongFunction
|(int)|double|IntToDoubleFunction
|(int, int)|int|IntBinaryOperator
|(long)|void|LongConsumer
|(long)|R|LongFunction
|(long)|boolean|LongPredicate
|(long)|int|LongToIntFunction
|(long)|long|LongUnaryOperator
|(long)|double|LongToDoubleFunction
|(long, long)|long|LongBinaryOperator
|(double)|void|DoubleConsumer
|(double)|R|DoubleFunction
|(double)|boolean|DoublePredicate
|(double)|int|DoubleToIntFunction
|(double)|long|DoubleToLongFunction
|(double)|double|DoubleUnaryOperator
|(double, double)|double|DoubleBinaryOperator