1.语法
(参数列表) -> { 函数体 }

lambda 表达式是为了简化写法
原来的写法是使用匿名内部类:

对象a.方法b(new C() {
    @Override
    public 返回类型 方法d(参数e, 参数f, 参数g, ...) {
        ...
    }
})

使用lambda表达式的写法是:

对象a.方法b( (参数e, 参数f, 参数g, ...) -> { ... } )

lambda的参数列表要和方法d的一致。

如果参数只有一个,可以去掉括号

2.这里有几个条件或规定:

1.方法b 的参数类型是一个只有一个抽象方法的接口(也叫函数式接口

interface C {
    抽象方法 d(...);
    // 只能有一个抽象方法
}

C不能是普通类(没有抽象方法),也不能是有多个抽象方法的接口

比如,下面这个接口就不可以,因为有多个抽象方法了:

interface C2 {
    void d1();
    void d2();
}

2.目标类型 C明确,也就是方法b不能有重载,也就是b的参数类型唯一确定,下面这种就不行:

方法b(String s) {
    ...
}

方法b(Intger i){
    ...
}

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐