JAVA 1.8 新特性学习(2) lambda表达式

λ表达式本质上是一个匿名方法,我们来看一下这个例子。在java1.7中,我们这样写代码:

interface Names {
    public void sayName(String name);

}

public class NameExample {

    public static void main(String[] args) {
        Names nameInstance = new Names() {
            @Override
            public void sayName(String name) {
                System.out.println("My Name is " + name);
            }
        };
        myName(nameInstance, "John");
    }

    private static void myName(Names nameInstance, String name) {
        nameInstance.sayName(name);
    }
}

输出 My Name is John

当使用java1.8以后,我们可以使用λ表达式,代码如下:

interface Names {
    public void sayName(String name);

}

public class NameExample {

    public static void main(String[] args) {
        Names nameInstance = name -> System.out.println("My Name is " + name);
        myName(nameInstance, "John");
    }

    private static void myName(Names nameInstance, String name) {
        nameInstance.sayName(name);
    }
}

λ表达式的目标类型是“函数接口”,这是java1.8的新概念。它的定义是:一个接口,如果只有一个显式声明的抽象方法,那么它就是一个函数接口。可以用@FunctionalInterface标注出来。也可以不标注。

注意,这个接口必须只有一个显式声明的抽象方法,其实也比较好理解,在λ表达式中我们根本没有写方法的名称,如果有多个显式的抽象方法的话,那么λ表达式怎么知道应该应用在哪个方法呢?

其实λ表达式的用法非常广泛,这里只是简单介绍一下,也是用的比较多的场景之一。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值