背景
Java 8 が公開され、Javaでもラムダ式が使えるようになった。
言語的制約により、Javaはプリミティブ型を含むものは別のインタフェースを用意せざるを得なかった。
その結果、必要なクラス名が簡単にはわからなくなってしまったので、とりあえず列挙してみた。
規則性はあるようだが、命名規則の優先度がいまいちよく分からない
対象
対象は Runnableクラス, java.util.function名前空間のものである。
一覧表
| ラムダ式の型 | Javaのクラス + メソッド名 |
|---|---|
| () -> void | java.lang.Runnable.run |
| (T, U) -> void | java.util.function.BiConsumer.accept |
| (T, U) -> R | java.util.function.BiFunction.apply |
| (T, U) -> boolean | java.util.function.BiPredicate.test |
| () -> boolean | java.util.function.BooleanSupplier.getAsBoolean |
| T -> void | java.util.function.Consumer.accept |
| (double, double) -> double | java.util.function.DoubleBinaryOperator.applyAsDouble |
| double -> void | java.util.function.DoubleConsumer.accept |
| double -> R | java.util.function.DoubleFunction.apply |
| double -> boolean | java.util.function.DoublePredicate.test |
| () -> double | java.util.function.DoubleSupplier.getAsDouble |
| double -> int | java.util.function.DoubleToIntFunction.applyAsInt |
| double -> long | java.util.function.DoubleToLongFunction.applyAsLong |
| double -> double | java.util.function.DoubleUnaryOperator.applyAsDouble |
| T -> R | java.util.function.Function.apply |
| (int, int) -> int | java.util.function.IntBinaryOperator.applyAsInt |
| int -> void | java.util.function.IntConsumer.accept |
| int -> R | java.util.function.IntFunction.apply |
| int -> boolean | java.util.function.IntPredicate.test |
| () -> int | java.util.function.IntSupplier.getAsInt |
| int -> double | java.util.function.IntToDoubleFunction.applyAsDouble |
| int -> long | java.util.function.IntToLongFunction.applyAsLong |
| int -> int | java.util.function.IntUnaryOperator.applyAsInt |
| (long, long) -> long | java.util.function.LongBinaryOperator.applyAsLong |
| long -> void | java.util.function.LongConsumer.accept |
| long -> R | java.util.function.LongFunction.apply |
| long -> boolean | java.util.function.LongPredicate.test |
| () -> long | java.util.function.LongSupplier.getAsLong |
| long -> double | java.util.function.LongToDoubleFunction.applyAsDouble |
| long -> int | java.util.function.LongToIntFunction.applyAsInt |
| long -> long | java.util.function.LongUnaryOperator.applyAsLong |
| (T, double) -> void | java.util.function.ObjDoubleConsumer.accept |
| (T, int) -> void | java.util.function.ObjIntConsumer.accept |
| (T, long) -> void | java.util.function.ObjLongConsumer.accept |
| T -> boolean | java.util.function.Predicate.test |
| () -> T | java.util.function.Supplier.get |
| (T, U) -> double | java.util.function.ToDoubleBiFunction.applyAsDouble |
| T -> double | java.util.function.ToDoubleFunction.applyAsDouble |
| (T, U) -> int | java.util.function.ToIntBiFunction.applyAsInt |
| T -> int | java.util.function.ToIntFunction.applyAsInt |
| (T, U) -> long | java.util.function.ToLongBiFunction.applyAsLong |
| T -> long | java.util.function.ToLongFunction.applyAsLong |
| T -> R | java.util.function.Function.apply |