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表达式代替了匿名内部类的写法

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值