default
) à toutes ces méthodes.@FunctionalInterface
" pour être explicite sur le fait qu'il s'agit d'une interface fonctionnelle.java.util.function.Predicate
java.util.function
":Predicate<T>: boolean test(T t)
boolean test(T t)
"
qui declare un seul paramètre ("t" de type "T") et retourne vrais/faux.IntPredicate: boolean test(int t)
LongPredicate: boolean test(long t)
DoublePredicate: boolean test(double t)
BiPredicate<T, U>: boolean test(T t, U u)
boolean test(T t, U u)
"
qui declare deux paramètres ("t" de type "T", "u" de type "U") et retourne vrais/faux.Consumer<T>: void accept(T t)
void accept(T t)
"
qui declare un seul paramètre ("t" de type "T") et ne retourne pas de valeur.IntConsumer: void accept(int t)
LongConsumer: void accept(long t)
DoubleConsumer: void accept(double t)
BiConsumer<T, U>: void accept(T t, U u)
void accept(T t, U u)
"
qui declare deux paramètres ("t" de type "T", "u" de type "U") et ne retourne pas de valeur.ObjIntConsumer<T>: void accept(T t, int u)
ObjLongConsumer<T>: void accept(T t, long u)
ObjDoubleConsumer<T>: void accept(T t, double u)
Supplier<T>: T get()
T get()
" qui ne declare aucun paramètre et l'implementation doit fournir une valuer de type "T".BooleanSupplier: boolean getAsBoolean()
IntSupplier: int getAsInt()
LongSupplier: long getAsLong()
DoubleSupplier: double getAsDouble()
Function<T, R>: R apply(T t)
R apply(T t)
"
qui declare un seul paramètre ("t" de type "T") et retourne une valeur de type "R".IntFunction<R>: R apply(int t)
LongFunction<R>: R apply(long t)
DoubleFunction<R>: R apply(double t)
ToIntFunction<T>: int applyAsInt(T t)
ToLongFunction<T>: long applyAsLong(T t)
ToDoubleFunction<T>: double applyAsDouble(T t)
IntToLongFunction: long applyAsLong(int t)
IntToDoubleFunction: double applyAsDouble(int t)
LongToIntFunction: int applyAsInt(long t)
LongToDoubleFunction: double applyAsDouble(long t)
DoubleToIntFunction: int applyAsInt(double t)
DoubleToLongFunction: long applyAsLong(double t)
BiFunction<T, U, R>: R apply(T t, U u)
R apply(T t, U u)
"
qui declare deux paramètres ("t" de type "T", "u" de type "U") et retourne une valeur de type "R".ToIntBiFunction<T, U>: int applyAsInt(T t, U u)
ToLongBiFunction<T, U>: long applyAsLong(T t, U u)
ToDoubleBiFunction<T, U>: double applyAsDouble(T t, U u)
UnaryOperator<T> extends Function<T, T>: T apply(T t)
IntUnaryOperator: int applyAsInt(int t)
LongUnaryOperator: long applyAsLong(long t)
DoubleUnaryOperator: double applyAsDouble(double t)
BinaryOperator<T> extends BiFunction<T, T, T>: T apply(T t, T u)
IntBinaryOperator: int applyAsInt(int t, int u)
LongBinaryOperator: long applyAsLong(long t, long u)
DoubleBinaryOperator: double applyAsDouble(double t, double u)
MyFunctionalInterface foo(FunctionalInterface myFunctionalInterface) { ... }
MyType::MyStaticMethod
myInstance::MyInstanceMethod
MyType::MyInstanceMethod
MyType
" :String::toUpperCase
" implique que
l’interface fonctionnelle est de type "Function<String, String>
".TestFunctionalInterface::toUpperCase
" implique
que l’interface fonctionnelle est de type "Function<TestFunctionalInterface, String>
".MyType::new
(t -> t)