(二)Java 8 - 函数编程Lambda表达式的几种格式

本文介绍了Java 8中Lambda表达式的不同格式,包括无参数、单参数和多参数的情况。强调了当Lambda方法体只有一行语句时,可以省略大括号和return关键字,但需注意其成对出现的原则。还提到,当有且仅有一个参数时,小括号可以省略。
摘要由CSDN通过智能技术生成

1.格式

  1. 方法没有参数: () -> {};
  2. 方法有参数::(param1,param2,param3,...) -> {};

1.要使用创建接口 StudentMsg的实现类,

2.并且该类只是使用一次,可以使用匿名内部类的方式,

3.但是匿名内部类编写起来很麻烦。而 StudentMsg接口中

4.有且仅只有一个抽象方法,这是一个典型的函数式接口

5.使用 lambda 来代替匿名内部类。lambda 体就是接口的实现。

public class TestOne {

    /**
     * 创建一个StudentMsg接口
     */
    @FunctionalInterface
    interface StudentMsg {

        public void getName(String name);

    }

    public static void main(String[] args) {

        StudentMsg studentMsg = (name) -> {
            System.out.println("名字为:"+name);
        };

        studentMsg.getName("小明");

    }

}

2.在 -> 右边的方法体中,如果只有一行语句,那么 可以省略大括号

于是就出现了下面的

 

public class TestOne {

    /**
     * 创建一个StudentMsg接口
     */
    @FunctionalInterface
    interface StudentMsg {

        public void getName(String name);

    }

    public static void main(String[] args) {
        
        //在 -> 右边的方法体中,如果只有一行语句,那么 可以省略大括号
        StudentMsg studentMsg = (name) -> System.out.println("名字为:"+name);;

        studentMsg.getName("小明");

    }

}

3. lambda 方法如果只有一个参数,则小括号可以省略

反之方法如果没有参数或有两个及以上的参数,则 小括号不能省略

上面的还可以改造成:

public class TestOne {

    /**
     * 创建一个StudentMsg接口
     */
    @FunctionalInterface
    interface StudentMsg {

        public void getName(String name);

    }

    public static void main(String[] args) {

        //在 -> 右边的方法体中,如果只有一行语句,那么 可以省略大括号
        //lambda 方法如果没有参数或有两个及以上的参数,则 小括号不能省略
        StudentMsg studentMsg = name -> System.out.println("名字为:"+name);;

        studentMsg.getName("小明");

    }

}

4.Lambda 方法体如果只有一行语句,则 大括号和return都可省略

 我们改造一下上面的方法,变为有返回值的

public class TestOne {

    /**
     * 创建一个StudentMsg接口
     */
    @FunctionalInterface
    interface StudentMsg {
        public String getName(String name,Integer age);
    }

    public static void main(String[] args) {
       
        StudentMsg studentMsg = (name,age)-> {
            return "名字为:"+name+"年龄为:"+age;
        };

        studentMsg.getName("小明",15);

    }

}

那么按照:Lambda 方法体如果只有一行语句,则 大括号和return都可省略,可以继续简化

注意:省略了大括号,必须省略 return。

           反之省略了 return ,则必须省略 {}。

             必须成对出现,或者都不出现。


public class TestOne {

    /**
     * 创建一个StudentMsg接口
     */
    @FunctionalInterface
    interface StudentMsg {

        public String getName(String name,Integer age);

    }

    public static void main(String[] args) {

        /**
         *  在 -> 右边的方法体中,如果只有一行语句,那么 可以省略大括号
         *  lambda 方法如果没有参数或有两个及以上的参数,则 小括号不能省略;
         *  lambda 方法体如果只有一行语句,则 大括号和return都可省略
         */
        StudentMsg studentMsg = (name,age)->"名字为:"+name+"年龄为:"+age;

        studentMsg.getName("小明",15);

    }

}

Lambda 表达式使用总结

  1.     lambda 表达式形式为 ()->{},-> 左边是抽象方法的形参列表, -> 是抽象方法的实现体。
  2.     lambda 方法如果没有参数或有两个及以上的参数,则 小括号不能省略。(换言之:有且只有一个参数的时候才可以省略小括号)
  3.     lambda 方法如果只有一个参数,则小括号可以省略。
  4.     lambda 方法体如果只有一行语句,则 大括号和return必须都省略。(也就是说:省略了大括号,则必须省略 return,省略了 return ,则必须省略 {},这俩要么成对出现,要么都不出现。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值