java Lambda表达式

Lambda表达式

lambda 就是一个匿名函数。可以对一个接口进行非常简洁的实现。

Lambda 对接口的要求

Lambda虽然可以对某些接口进行简单的实现,但是并不是所有的接口都可以用Lambda表达式来实现。要求接口中定义的必须要实现的抽象方法只能是一个

语法

Lambda是一个匿名函数 // 参数列表 方法体 () : 用来描述参数列表
{}: 描述方法体 -> : 运算符goes to

无返回值,无参数

@FunctionalInterface
public interface NoReturnNoParameter {
    void sayHello();
}

NoReturnNoParameter parameter = () -> {
    System.out.println("hello, world");
};
parameter.sayHello();

无返回值,单个参数

@FunctionalInterface
public interface NoReturnSignleParam {
    void sayHello(String name);
}

NoReturnSignleParam param = (String name) -> {
    System.out.println("hello, " + name);
};
param.sayHello("张飞");

语法精简

1、省略参数类型(如果需要省略类型,则每一个参数的类型都要省略,不可只省略一部分) 2、参数小括号。如果参数只有一个,此时小括号可以省略 3、方法大括号。方法体只有一条语句则可以省略大括号 4、如果方法体只有唯一的返回语句,则return也可以省略 LambdaParam param = () -> 10;

方法引用

可以快速的将一个Lambda表达式的实现指向一个已经实现的方法 语法: 方法的隶属者::方法名称 注意: 1、参数数量和类型一定要和接口中定义的方法一致 2、返回值类型,一定要和接口定义的方法一致

class Syntax3
{
    public void testLambda() {
        NoReturnSignleParam param = Syntax3:: change;
    }

    private static int change(String name) {
        return name
    }
}

构造方法的引用

PersionCreater creater = () -> new Persion();
PersionCreater creater1 = () -> Persion::new;