JAVA核探 >> lambda >> 2、lambda基本语法

2 篇文章 0 订阅

Lambda基本语法

如下为lambda基础语法

public class Syntax1 {

    public static void main(String[] args) {
        /* 1、lambda基本语法 */

        // ():用来描述参数列表
        // {}:用来描述方法体;单行时可省略
        // ->:lambda运算符,读作goes to

        // 无参无返回
        NoRetNoParam lambda1 = () -> {
            System.out.println("helloWorld");
        };
        lambda1.test();

        // 单参数无返回值
        NoRetSingleParam lambda2 = (int a) -> {
            System.out.println(a);
        };
        lambda2.test(11);

        // 多参数无返回
        NoRetMutipleParam lambda3 = (a, b) -> {
            System.out.println(a + b);
        };
        lambda3.test(1, 2);


        // 无参有返回
        SingleRetNoParam lambda4 = () -> {
            System.out.println(100);
            return 100;
        };
        lambda4.test();

        // 单参数有返回值
        SingleRetSingleParam lambda5 = (a) -> {
            return ++a;
        };
        lambda5.test(100);

        // 多参数有返回值
        SingleRetMutipleParam lambda6 = (a, b) -> {
            return a + b;
        };
        lambda6.test(1, 2);
        
    }
}

Lambda语法精简

上述lambda语法还可以精简,减少代码量。

  1. 单个参数时,可省略();
  2. 当lambda表达式只有一行时,可以省略{};
  3. 如果方法体中唯一一条语句是返回语句,则在省略到{]同时,也必须省略到return。

上述代码精简过后:

public class Syntax1 {

    public static void main(String[] args) {
        /* 1、lambda基本语法 */

        // ():用来描述参数列表
        // {}:用来描述方法体;单行时可省略
        // ->:lambda运算符,读作goes to

        // 无参无返回
        NoRetNoParam lambda1 = () -> System.out.println("helloWorld");
        lambda1.test();

        // 单参数无返回值
        NoRetSingleParam lambda2 = a -> System.out.println(a);
        lambda2.test(11);

        // 多参数无返回
        NoRetMutipleParam lambda3 = (a, b) -> System.out.println(a + b);
        lambda3.test(1, 2);
        
        // 无参有返回
        SingleRetNoParam lambda4 = () -> {
            System.out.println(100);
            return 100;
        };
        lambda4.test();

        // 单参数有返回值
        SingleRetSingleParam lambda5 = a -> ++a;
        lambda5.test(100);

        // 多参数有返回值
        SingleRetMutipleParam lambda6 = (a, b) -> a + b;
        lambda6.test(1, 2);
        
    }
}

Lambda方法引用

一般方法引用
public class Syntax2 {

    public static void main(String[] args) {

        // 复杂方式
        SingleRetSingleParam lambda1 = a -> a * 2;
        SingleRetSingleParam lambda2 = a -> a * 2;

        // 方法抽象
        SingleRetSingleParam lambda3 = a -> change(3);

        // 方法引用
        // 可以快速将一个lambda表达式的实现指向一个已经实现的方法
        // 语法:方法拥有者::方法名
        // 注意:1、参数数量和类型一定要和接口中定义的一致;2、返回值的类型也一定要和接口中定义的方法一致
        /* 静态方法 */
        SingleRetSingleParam lambda4 = Syntax2::change;
        int num = lambda4.test(3);
    }

    private static int change(int a) {
        return a * 2;
    }
}
构造方法引用
public class Syntax3 {

    public static void main(String[] args) {

        PersonCreater person = () -> new Person();

        /*构造方法引用*/
        PersonCreater person1 = Person::new;
        Person a = person1.getPerson();

        PersonCreaterParam person2 = Person::new;
        Person b = person2.getPerson("Sam", 20);
    }
}

interface PersonCreater {
    Person getPerson();
}

interface PersonCreaterParam {
    Person getPerson(String name, Integer age);
}

/*人物类*/
public class Person {

    private String name;

    private Integer age;

    public Person() {
    }

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
        System.out.println("age=" + age + "name=" + name);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值