java.util.function 接口的命名规则
- 如果接口只处理对象,而不是基本类型,那就会用一个直截了当的名字,像 Function、Consumer和Predicate等。参数类型通过泛型添加。
- 若接口接受一个基本类型的参数,则会用名字的第一部分来表示,例如LongConsumer、DoubleFunction和Predicate等。参数类型会通过泛型添加。
- 若接口返回的是基本类型的结果,则会用 To 来表示,例如 ToLongFunction<T> 和 IntToLongFunction。
- 若接口返回的类型和参数类型相同,则会被命名为Operator。UnaryOperator用于表示一个参数,BinaryOperator用于表示两个参数。
- 若接口接受一个参数并返回 boolean,则会被命名为Predicate。
- 若接口接受两个不同类型的参数,则名字中会有一个Bi(比如BiPredicate)。
java.util.function的目标类型
| 特点 | 函数式方法命名 * | 用法 |
|---|---|---|
| 没有参数;没有返回值 | Runnable (java.lang) run() | Runnable |
| 没有参数;可以返回任何类型 | Supplier get() getAstype() | Supplier<T> BooleanSupplier IntSupplier LongSupplier DoubleSupplier |
| 没有参数;可以返回任何类型 | Callable (java.util.concurrent) call() | Callable<V> |
| 一个参数;没有返回值 | Consumer accept() | Consumer<T> IntConsumer LongConsumer DoubleConsumer |
两个参数的Consumer | BiConsumer accept() | BiConsumer<T,U> |
两个参数的Consumer;第一个参数是引用,第二个参数是基本类型 | ObjtypeConsumer accept() | ObjIntConsumer<T> ObjLongConsumer<T> ObjDoubleConsumer<T> |
| 一个参数;返回值为不同类型 | Function apply() Totype & typeTotype: applyAstype() | Function<T,R> IntFunction<R> LongFunction<R> DoubleFunction<R> ToIntFunction<T> ToLongFunction<T> ToDoubleFunction<T> IntToLongFunction IntToDoubleFunction LongToIntFunction LongToDoubleFunction DoubleToIntFunction DoubleToLongFunction |
| 一个参数;返回值为相同类型 | UnaryOperator apply() | UnaryOperator<T> IntUnaryOperator LongUnaryOperator DoubleUnaryOperator |
| 两个相同类型的参数;返回值也是相同类型 | BinaryOperator apply() | BinaryOperator<T> IntBinaryOperator LongBinaryOperator DoubleBinaryOperator |
两个相同类型的参数;返回int | Comparator (java.util) compare() | Comparator<T> |
两个参数;返回boolean | Predicate test() | Predicate<T> BiPredicate<T,U> IntPredicate LongPredicate DoublePredicate |
| 基本类型的参数;返回值也是基本类型 | typeTotypeFunction applyAstype() | IntToLongFunction IntToDoubleFunction LongToIntFunction LongToDoubleFunction DoubleToIntFunction DoubleToLongFunction |
| 两个参数;不同类型 | Bi+操作名(方法名会变化) | BiFunction<T,U,R> BiConsumer<T,U> BiPredicate<T,U> ToIntBiFunction<T,U> ToLongBiFunction<T,U> ToDoubleBiFunction<T,U> |
摘自OnJava中文版13.4 函数式接口
本文详细介绍了Java.util.function包下函数式接口的命名规律,包括无参数、单参数、双参数等场景下的接口命名,如Function、Consumer、Predicate等,并展示了如何根据参数和返回值类型选择合适的接口。此外,还涵盖了如Operator、ToIntFunction等特定类型的接口命名规则。
1298

被折叠的 条评论
为什么被折叠?



