第5章-第9节-Java中函数式编程Lambda表达式

发布时间:2024年01月09日

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 {
    public void print();

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

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

4)、带参的接口Lambda

public interface NewPrinter {
    public 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 {
    public 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 {
    public 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);
    }
}

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

文章来源:https://blog.csdn.net/jnbbwyth/article/details/135469192
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。