1、Lambda的特性(行为参数化)

在JDK8之前,Java是不支持函数式编程的,所谓的函数编程,即可理解是将一个函数(也称为“行为”)作为一个参数进行传递。通常我们提及得更多的是面向对象编程,面向对象编程是对数据的抽象(各种各样的POJO类),而函数式编程则是对行为的抽象(将行为作为一个参数进行传递)。

2、认识Lambda表达式

 在JDK8的环境下按照Java传统语法规则编写一个线程

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("Hello World!");
    }
});

IDEA会给出提示可以使用Lambda表达式替换

java8新特性--Lambda表达式 随笔 第1张

使用Lambda表达式则只需要使用一句话就可代替上面使用匿名类的方式

new Thread(() -> System.out.println("Hello World!"));

3、Lambda表达式的组成

java8新特性--Lambda表达式 随笔 第2张

4、Lambda表达式的使用场景

 能够接收Lambda表达式的参数类型,是一个只包含一个方法的接口只包含一个方法的接口称之为“函数接口”。

5、代码示例

无参数,无返回值

package com.coderbuff.custom;

public interface FunctionInterface {
    void test();
}

package com.coderbuff.custom;

import org.junit.Test;

/**
 * 函数接口测试
 */
public class FunctionInterfaceTest {

    @Test
    public void testLambda() {
        func(new FunctionInterface() {
            @Override
            public void test() {
                System.out.println("Hello World!");
            }
        });
        //使用Lambda表达式代替上面的匿名内部类
        func(() -> System.out.println("Hello World"));
    }

    private void func(FunctionInterface functionInterface) {
        functionInterface.test();
    }
}

 

有参数,无返回值

有参数,有返回值

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄