Java 8 新特性——Lambda表达式

一.Lambda表达式简介

Lambda 表达式是 Java 8 的一个新特性,Lambda 表达式可以代替一部分的匿名内部类,可以使代码变的更加简洁紧凑。

Lambda 表达式只能实现函数式接口,什么是函数式接口呢?就是一个接口有且只有一个抽象方法。函数式接口可以添加 @FunctionalInterface 注解,非函数式接口添加 @FunctionalInterface 注解后,编译会报错。

二.Lambda表达式语法

(parameters) -> expression

(parameters) -> { statements; }

  • paramaters:类似于方法的形参列表,这里指的是函数式接口中抽象方法的参数。参数的类型即可以声明也可以省略,如果只有一个参数,括号也可以省略
  • ->:类似于 JavaScript 中的箭头函数 
  • 方法体:函数式接口中抽象方法的实现。如果方法体只有一个语句,大括号是可以省略

三.Lambda表达式基本使用

1.无参数无返回值

public class Demo15 {

    interface NoParameterNoReturn {
        // 无参数无返回值
        void test();
    }

    public static void main(String[] args) {
        NoParameterNoReturn noParameterNoReturn = () -> {
            System.out.println("无参数无返回值");
        };
        noParameterNoReturn.test();
    }

}

执行结果:

无参数无返回值

Process finished with exit code 0

 2.有参数无返回值

public class Demo16 {

    interface OneParameterNoReturn {
        // 一个参数无返回值
        void test(String str);
    }

    interface TwoParameterNoReturn {
        // 两个参数无返回值
        void test(String str1, String str2);
    }

    public static void main(String[] args) {
        // 一个参数时,括号阔以省略
        OneParameterNoReturn oneParameterNoReturn = str -> {
            System.out.println(str);
        };
        oneParameterNoReturn.test("一个参数无返回值");

        TwoParameterNoReturn twoParameterNoReturn = (str1, str2) -> {
            System.out.println(str1 + str2);
        };
        twoParameterNoReturn.test("两个参数", "无返回值");
    }

}

执行结果:

一个参数无返回值
两个参数无返回值

你可能感兴趣的:(java)