Java

Java8 ラムダ式用のクラス

More than 5 years have passed since last update.


背景

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