lambda的定义

java中lambda的本质是匿名函数,并且 继承 或者 java8接口的default修饰的方法不会影响lambda的特性。

为什么叫它匿名函数,很简单,可以不写函数名。

简单示例:

package org.example;

public interface DemoInterface {
    default void aFun() {
        System.out.println("这是一个a方法");
    }

    default String bFun() {
        System.out.println("执行了b方法,并且返回方法名称");
        return "bFun";
    }

    default String bFun(String param) {
        System.out.println("还可以重载b方法,并且返回传入参数");
        return param;
    }

    String cFun();
}
package org.example;

public class Main {
    public static void main(String[] args) {
        demoFun(() -> "lambda");

        DemoInterface demoInterface = () -> "lambda2";
        demoFun(demoInterface);

        demoInterface.aFun();
        System.out.println(demoInterface.bFun());
    }

    public static void demoFun(DemoInterface demoInterface) {
        System.out.println(demoInterface.cFun());
    }
}

 常见的函数式接口:

Runnable/Callable

Supplier/Consumer

Compparator

Predicate

Function

还可以在接口上添加 @FunctionalInterface 来校验复杂的接口是否符合函数式接口的定义

ps:

当匿名方法所接收的参数只有一个的时候,可以省略小括号

当匿名方法所要执行的逻辑代码只有一行的时候,可以省略大括号

posted @ 2023-06-11 16:34  时间羚羊  阅读(9)  评论(0编辑  收藏  举报