这些接口定义了单个抽象方法,用于实现 lambda 表达式和方法引用,从而支持函数式编程风格。
函数式编程的本质是,把函数也当做一个变量,让函数也做 [一等公民](一等公民.md)。
进一出一:Function 接口代表一个接受单个参数并返回结果的函数。它的抽象方法为 apply。
进二出一:BiFunction 接口代表一个接受两个参数并返回结果的函数。它的抽象方法也是 apply。
| 参数 - 返回值 | 接口 | 描述 |
| -------- | ------------------- | -------------- |
| 0-0 | Runnable | 没有参数,也没有返回值 |
| 0-1 | `Callable<V>` | 没有参数,有一个返回值 |
| 1-1 | `Function<T, R>` | 接受一个参数,返回一个值 |
| 2-1 | `BiFunction<T, U, R>` | 接受两个参数,返回一个值 |
| 0-1 | `Supplier<T>` | 没有参数,返回一个值 |
| 1-0 | `Consumer<T>` | 接受一个参数,没有返回值 |
| 1-1 | `Predicate<T>` | 接受一个参数,返回一个布尔值 |