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() getAs type() | 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 ;第一个参数是引用,第二个参数是基本类型 | Obj typeConsumer accept() | ObjIntConsumer<T> ObjLongConsumer<T> ObjDoubleConsumer<T> |
一个参数;返回值为不同类型 | Function apply() To type & typeTo type: applyAs type() | 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 |
基本类型的参数;返回值也是基本类型 | typeTo typeFunction applyAs type() | 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 函数式接口