java.util.function 接口的命名规则

  1. 如果接口只处理对象,而不是基本类型,那就会用一个直截了当的名字,像 Function、Consumer和Predicate等。参数类型通过泛型添加。
  2. 若接口接受一个基本类型的参数,则会用名字的第一部分来表示,例如LongConsumer、DoubleFunction和Predicate等。参数类型会通过泛型添加。
  3. 若接口返回的是基本类型的结果,则会用 To 来表示,例如 ToLongFunction\ 和 IntToLongFunction。
  4. 若接口返回的类型和参数类型相同,则会被命名为Operator。UnaryOperator用于表示一个参数,BinaryOperator用于表示两个参数。
  5. 若接口接受一个参数并返回 boolean,则会被命名为Predicate。
  6. 若接口接受两个不同类型的参数,则名字中会有一个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>