干货分享

什么是lambda表达式

2020-09-21  本文已影响0人  小白菜aaa

简介

本文主要概括了其lambda表达式的用法和一个操作实例,希望大家看完这篇文章能对你有些帮助。

lambda表达式

是什么

是一个没有名字的函数

用法

无参数,不可省略参数的括号

() -> System.out.println("lambda");

一个参数,可省略参数外的括号

x -> System.out.println(x);

多个参数,不可省略参数的括号

(x, y) -> System.out.println(x + y);

单条语句,可省略语句的大括号

() -> System.out.println("lambda");

多条语句,语句需要加大括号

() -> {
        System.out.println("lambda1");
        System.out.println("lambda2");
      };

参数类型可省略,根据要实现的接口的方法能推导出来

如果只有一个语句,也可省略return关键字

示例

无返回值无参数

只有一个抽象方法的接口

public interface FunctionInterface{

    void play();

}

测试类

public class Lambda{

    public static void main(String[] args){

        // 匿名内部类的写法
        FunctionInterface functionInterface1 = new FunctionInterface(){
            @Override
            public void play(){
                System.out.println("a");
            }
        };
        functionInterface1.play();

        // lambda表达式的写法
        FunctionInterface functionInterface2 = () -> System.out.println("a");
        functionInterface2.play();

    }

}

输出结果

a
a

无返回值有参数

public interface FunctionInterface{

    void play(String s);

}

public class Lambda{

    public static void main(String[] args){

        // 匿名内部类的写法
        FunctionInterface functionInterface1 = new FunctionInterface(){
            @Override
            public void play(String s){
                System.out.println(s);
            }
        };
        functionInterface1.play("a");

        // lambda表达式的写法
        FunctionInterface functionInterface2 = (s) -> System.out.println(s);
        functionInterface2.play("a");

    }

}

a
a

有返回值无参数

public interface FunctionInterface{

    int play();

}

public class Lambda{

    public static void main(String[] args){

        // 匿名内部类的写法
        FunctionInterface functionInterface1 = new FunctionInterface(){
            @Override
            public String play(){
               return "a";
            }
        };
        System.out.println(functionInterface1.play());

        // lambda表达式的写法,此处可省略return,如果要用return,需要加大括号
        FunctionInterface functionInterface2 = () -> "a";
        // FunctionInterface functionInterface2 = () -> {return "a"};
        System.out.println(functionInterface2.play());

    }

}

a
a

总结

lambda表达式代替了匿名内部类的写法

参数、返回值类型和要实现的接口的方法参数、返回值类型对应,语句表达式就是方法体

本文到这里就结束了,感谢看到最后的朋友,都看到最后了,点个赞再走啊,如有不对之处还请多多指正。

上一篇下一篇

猜你喜欢

热点阅读