第7章-第8节-Java中的函数式编程Lambda表达式

1、什么是Lambda表达式

Lambda表达式是JAVA8中提供的一种新的特性,是一个匿名函数方法。可以把Lambda表达式理解为一段可以传递的代码,可以让你的代码更加优雅

2、Lambda表达式的前提条件

只有函数式接口的匿名内部类才可以使用Lambda表达式来进行简化。简单来说就是接口当中只有一个抽象方法是需要我们去实现的

3、使用方式

1)、我们先来看看我们之前的写法:

public interface NewPrinter {
    public void print(); //接口中提供一个抽象方法
}
public class Test20 {
    public static void main(String[] args) {
        method(new NewPrinter() {
            @Override
            public void print() {
                System.out.println("我是匿名内部类,正在执行print方法");
            }
        });   
    }
    public static void method(NewPrinter printer){
        printer.print();
    }
}

2)、我们再来看看Lambda写法:

public class Test20 {
    public static void main(String[] args) {
        method(() -> System.out.println("我是Lambda表达式,正在执行print方法"));
    }

    public static void method(NewPrinter printer){
        printer.print();
    }
}

3)、可以发现,Lambda表达式极大的简化了代码,让代码变得优雅无比!那么既然接口中只有一个方法才可以使用Lambda,那么default方法和static方法可以写入吗?

public interface NewPrinter {
    void print();

    default void test1(){}
    static  void test2(){}
}

我们将接口加上了默认方法后,发现可以成功执行,所以接口中允许存在默认和静态方法

4)、带参的接口Lambda

public interface NewPrinter {
    void print(String str);

    default void test1(){
        System.out.println(1);
    }
    static  void test2(){
        System.out.println(2);
    }
}
public class Test20 {
    public static void main(String[] args) {
        method("123",e -> System.out.println(e));
    }
    public static void method(String str,NewPrinter printer){
        printer.print(str);
    }
}
  • 当接口方法参数只有一个时,小括号也可以省略!

5)、带多个参数Lambda  

public interface NewPrinter {
    void print(String str1,String str2);

    default void test1(){
        System.out.println(1);
    }
    static  void test2(){
        System.out.println(2);
    }
}
public class Test20 {
    public static void main(String[] args) {
        method("Hello","\tLambda~",(e1,e2) -> System.out.println(e1+e2));
    }

    public static void method(String str1,String str2,NewPrinter printer){
        printer.print(str1,str2);
    }
}

6)、带返回值的Lambda

public interface NewPrinter {
    String print(String str1);

    default void test1(){
        System.out.println(1);
    }
    static  void test2(){
        System.out.println(2);
    }
}
public class Test20 {
    public static void main(String[] args) {
        NewPrinter printer = e -> {
            System.out.println(e);
            return "我是返回值!";
        };
        String result = printer.print("Hello~Lambda~!");
        System.out.println(result);
    }
}

4、lambda表达式的进一步用::进行简化的四种情况:(下面四种具体例子以后再写)

1)、 静态方法引用:

2)、对象方法引用:

3)、构造方法引用:

4)、数组的引用:

本电子书目录:《Java基础的重点知识点全集》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zwarwolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值