Lambda 表达式(3)

141 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第24天,点击查看活动详情

继续嗑 Lambda 表达式,既然好不容易做一次 Lambda 表达式的汇总,就一次性做齐喽,也方便自己以后回顾......冲......上次说到了,Lambda 表达式的语法,继续......

函数式接口

函数式接口:只包含一个抽象方法的接口。可以通过 Lambda 表达式来创建该接口的实现对象。可以在任意函数式接口上使用 @FunctionalInterface 注解,用于检测它是否是一个函数式接口,同时 JavaDoc 也会包含一条声明,说明该接口是一个函数式接口。

自定义函数式接口

根据函数式接口定义,自定义函数式接口:

    @FuctionalInterface
    public interface MyFuncInterface<T> {
        public T getValue(String str);
    }

定义一个方法将函数式接口作为方法参数:

        public String toLowerString(MyFuncInterface<String> mfi, String str) {
            return mfi.getValue(str);
        }

将 Lambda 表达式实现的接口作为参数传递:

    public void testDemo() {
        String value = toLowerString((str) -> {
            return str.toLowerCase();
        }, "WOSHICHENGUANXI");
        System.out.println(value);
    }
结果:
    woshichenguanxi

Java 内置函数式接口

函数式接口参数类型返回类型用途
Consumer
消费性接口
Tvoid对类型为 T 的对象应用操作,包含方法:void accept(T t);
Supplier
供给型接口
T返回类型为 T 的对象,包含方法:T get();
Function<T,R>
函数型接口
TR对类型为 T 的对象应用操作,并返回结果。结果是 R 类型的对象。包含方法:R apply(T t);
Predicate
断定型接口
Tboolean确定类型为 T 的对象是否满足约束,并返回 boolean 值。包含方法:boolean test(T t);
BiFunction<T, U, R>T, UR对类型为 T,U 的参数应用操作,返回 R 类型的结果。包含方法:R apply(T t, U u);
UnaryOperator
(Function 子接口)
TT对类型为 T 的对象进行一元运算,并返回 T 类型的结果。包含方法:T apply(T t);
BinaryOperator
BiFunction 子接口
T, TT对类型为 T 的对象进行二元运算,并返回 T 类型的结果。包含方法:T apply(T t1, T t2);
BiConsumer<T, U>T, Uvoid对类型为T,U 的参数应用操作。包含方法:void accept(T t, U u);
ToIntFunction
ToLongFunction
ToDoubleFunction
Tint
long
double
分别计算 int、long、double 值得函数
IntFunction
LongFunction
DoubleFunction
int
long
double
R参数分别为 int、long、double 类型的函数

怎么不知不觉写了半天的函数式接口......也算跟 Lambda 表达式有关吧?今天暂且就先学习到这,下课!
希望本文能够帮到你,如有错误,望指正!
我向你敬礼啊,Salute!