Java1.8的Lambda表达式该怎么用???

Lambda表达式

lambda表达式介绍

Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。

Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

使用 Lambda 表达式可以使代码变的更加简洁紧凑。

​ 将仅有一个方法接口作为函数,不再需要复杂地编写它的实现类和实现方法。

​ 而是使用简介的书写方式代替繁琐的步骤。


lambda表达式使用

​ 有一个Animal接口,它有一个 run() 方法。使用测试类的方法调用该接口的方法。

​ 我们在lambda表达式之前使用匿名内部类形式:

public class Test1 {

    public static void main(String[] args) {
        run(new Animal() {
            @Override
            public void run() {
                System.out.println("跑起来了...");
            }
        });
    }

    public static void run(Animal animal){
        animal.run();
    }

    interface Animal{
        void run();
    }

}

​ 我们再使用lambda表达式:

public class Test2 {

    public static void main(String[] args) {
        run(()->{
            System.out.println("跑起来...");
        });

    }

    public static void run(Animal animal){
        animal.run();
    }

    interface Animal{
        void run();
    }

}

​ 可以看到方法体内的接口不需要再new出来,而是直接使用:

()->{System.out.println("跑起来...");

​ 这是接口内方法无参数且无返回值的形式,那么有参数,有返回值的呢?

public class Test3 {
    public static void main(String[] args) {
        //Animal接口内方法有参数有返回值
        String s= run("小马",(name)->{
            return (name+"跑得快...");
        });
        System.out.println(s);

    }

    public static String run(String name,Animal animal){
        return animal.run(name);
    }

    interface Animal{
        String run(String name);
    }

}

可以优化的情况:

  • 可选类型声明: 不需要声明参数类型,编译器可以统一识别参数值。
  • 可选的参数圆括号: 一个参数无需定义圆括号,但多个参数需要定义圆括号。
  • 可选的大括号: 如果主体包含了一个语句,就不需要使用大括号。
  • 可选的返回关键字: 如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

变量作用域:

  • ​ lambda表达式可以引用外部的变量,但不允许修改
public static void main(String[] args) {
        //Animal接口内方法有参数有返回值
        String horse = "小马驹";
        String s= run("小马",(name)-> {
            horse = "大马猴";			//编译错误,不能修改外部变量的值
            return (name + "跑得快...");
        });
        System.out.println(s);

    }
  • ​ lambda表达式参数和大括号内不允许定义和外部变量相同名字的变量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值