Lambda表达式

Lambda表达式

Lambda表达式支持将一个方法【行为】当做参数传递,这种编程方式称为【函数式编程】,这种编程方式最大的特点就是代码紧凑,减少冗余代码,让编程边的更加简洁

语法格式

Lembda表达式通过左侧的参数,右侧的表达式和中间的右箭头组成:

  • • 参数可以为空
  • • 可以没有返回值
// 有参有返回值
(parameter1,parameter12,...) -> {
    expression;
    ...
    return xxx;
}
// 无参有返回值 
() -> {
    expression;
    ...
    return xxx;
}

// 有参无返回值
(parameter1,parameter12,...) -> {
    expression;
    ...
}

// 无参无返回值
() -> {
    expression;
    ...
}

实现原理

Lambda表达式也并不是想用就用,必须依赖于函数式接口才可使用

函数式接口:即接口中只有一个抽象法的接口,在JDK8及以后版本都会使用 @FunctionalInterface注解修饰

类型推断:Lambda表达式无需指定参数类型,程序依然可以编译,Lambda表达式的类型依据上下文环境,由编译器推断出来参数类型,这就是类型推断

实例

/**
 * 无参函数式接口
 */
public class NoArgsMain {
    public static void main(String[] args) {
        // 1、原始方式实现
        Supplier<Integer> s1 = new Supplier<Integer>() {
            @Override
            public Integer get() {
                return 1024;
            }
        };
        // 通过get方法获取返回值
        System.out.println(s1.get());
        
        // 2、通过Lambda表达是实现
        Supplier<String> s2 = () -> {
            return "Lambda实现";
        };
        // 通过get方法获取返回值
        System.out.println(s2.get());
    }
}

简化代码

如果Lambda表达式有返回值且代码体只有一行代码时,return和大括号可以省略不写

Supplier<String> s2 = () -> "Lambda实现";

1、如果只有一个参数则可以省略小括号
2、代码体只有一行代码则可以省略大括号

 Consumer<String> consumer2 = str -> System.out.println("我是Lambda消费型接口," + str);
        consumer2.accept("qihe");

总结

如果代码体只有一行代码,无论有无参数,大括号都可省略

• 如果代码体只有一行代码,有返回值则return可以省略

• 如果有且仅有一个参数,参数的小括号可以省略,没有参数和有多个参数都不可省略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值