目录
一、什么是函数式接口
函数式接口(Functional Interface): 是描述一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
- 函数式接口 可以被隐式转换为 lambda 表达式。
自己实现一个函数式接口:
/
* <p> @Title GreetingService
* <p> @Description 自定义函数式接口
*
* @author ACGkaka
* @date 2023/2/24 17:51
*/
@FunctionalInterface
public interface GreetingService {
void sayMessage(String message);
}
简单使用:
public static void main(String[] args) {
GreetingService greetingService = message -> System.out.println("hello " + message);
greetingService.sayMessage("java");
}
二、Function(T->R)
定义示例:
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
常用接口:
接口 | 描述 |
---|---|
Function<T,R> | 接受一个输入参数,返回一个结果。 |
BiFunction<T,U,R> | 接受两个输入参数,返回一个结果。 |
IntFunction<R> | 接受一个int类型输入,返回一个结果 。 |
IntToLongFunction | 接受一个int类型输入,返回一个long类型结果。 |
IntToDoubleFunction | 接受一个int类型输入,返回一个double类型结果 。 |
LongFunction<R> | 接受一个long类型输入,返回一个结果。 |
LongToIntFunction | 接受一个long类型输入,返回一个int类型结果。 |
LongToDoubleFunction | 接受一个long类型输入,返回一个double类型结果。 |
DoubleFunction<R> | 接受一个double类型输入,返回一个结果。 |
DoubleToIntFunction | 接受一个double类型输入,返回一个int类型结果。 |
DoubleToLongFunction | 接受一个double类型输入,返回一个long类型结果。 |
ToIntFunction<T> | 接受一个输入参数,返回一个int类型结果。 |
ToIntBiFunction<T,U> | 接受两个输入参数,返回一个int类型结果。 |
ToLongFunction<T> | 接受一个输入参数,返回一个long类型结果。 |
ToLongBiFunction<T,U> | 接受两个输入参数,返回一个long类型结果。 |
ToDoubleFunction<T> | 接受一个输入参数,返回一个double类型结果。 |
ToDoubleBiFunction<T,U> | 接受两个输入参数,返回一个double类型结果。 |
三、Consumer(T->void)
定义示例:
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
常用接口:
接口 | 描述 |
---|---|
Consumer<T> | 接受一个输入参数,无返回值。 |
BiConsumer<T,U> | 接受两个输入参数,无返回值。 |
IntConsumer | 接受一个int类型的输入参数,无返回值 。 |
LongConsumer | 接受一个long类型的输入参数,无返回值。 |
DoubleConsumer | 接受一个double类型的输入参数,无返回值。 |
ObjIntConsumer<T> | 接受一个object类型和一个int类型的输入参数,无返回值。 |
ObjLongConsumer<T> | 接受一个object类型和一个long类型的输入参数,无返回值。 |
ObjDoubleConsumer<T> | 接受一个object类型和一个double类型的输入参数,无返回值。 |
四、Operator(T->T)
定义示例:
@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {
static <T> UnaryOperator<T> identity() {
return t -> t;
}
}
常用接口:
接口 | 描述 |
---|---|
UnaryOperator<T> | 接受一个参数为类型T,返回值类型也为T。 |
BinaryOperator<T> | 接受两个参数为类型T,返回值类型也为T。 |
IntUnaryOperator | 接受一个参数同为类型int,返回值类型也为int 。 |
IntBinaryOperator | 接受两个参数同为类型int,返回值类型也为int 。 |
LongUnaryOperator | 接受一个参数同为类型long,返回值类型也为long。 |
LongBinaryOperator | 接受两个参数同为类型long,返回值类型也为long。 |
DoubleUnaryOperator | 接受一个参数同为类型double,返回值类型也为double 。 |
DoubleBinaryOperator | 接受两个参数同为类型double,返回值类型也为double 。 |
五、Predicate(T->boolean)
定义示例:
@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
常用接口:
接口 | 描述 |
---|---|
Predicate<T> | 接受一个输入参数,返回一个布尔值结果。 |
BiPredicate<T,U> | 接受两个输入参数,返回一个布尔值的结果。 |
IntPredicate | 接受一个int输入参数,返回一个布尔值的结果。 |
LongPredicate | 接受一个long输入参数,返回一个布尔值类型结果。 |
DoublePredicate | 接受一个double输入参数,返回一个布尔值类型结果。 |
六、Supplier(void ->T)
定义示例:
@FunctionalInterface
public interface Supplier<T> {
T get();
}
常用接口:
接口 | 描述 |
---|---|
Supplier<T> | 无参数,返回一个结果。 |
IntSupplier | 无参数,返回一个int类型结果。 |
LongSupplier | 无参数,返回一个long类型的值。 |
DoubleSupplier | 无参数,返回一个double类型的值。 |
BooleanSupplier | 无参数,返回一个boolean类型的值。 |
整理完毕,完结撒花~
1.Java 8 函数式接口,https://www.runoob.com/java/java8-functional-interfaces.html