Lambda系列-基础语法

定义

一个匿名函数,也可以称为闭包

标准结构

()->{}
():参数列表
->:操作符
{}:方法体

函数式接口

在介绍lambda的基础语法之前先了解一下什么是函数式接口,因为lambda的需要与函数式接口相结合使用。

所谓函数式接口,首先是一个接口,其次,这个接口中只能最多有一个抽象方法,而在普通的接口中我们可以定义多个抽象方法,这也是函数式接口与普通接口的最大区别。

如何定义函数式接口?先定义一个普通接口,要保证接口中的抽象方法只有且只有一个,然后再在接口的顶层使用@FunctionalInterface对接口进行注解

示例代码:

@FunctionalInterface
public interface Test {
    void test();
}

函数式接口的特点

有且仅有一个抽象方法
允许定义静态方法
允许定义默认方法
允许Java.lang.object中的public方法
可以不使用@FunctionalInterface注解,只要符合接口要求即可,添加注解是为了方便编译器检查

基础语法

先准备几个接口,针对参数和返回值几种不同的情况

  1. 无返回值,无参 LambdaNoneReturnParams
  2. 无返回值,一个参数 LambdaNoneReturnSingleParam
  3. 无返回值,多个参数 LambdaNoneReturnMoreParam
  4. 一个返回值,无参 LambdaSingleReturnNoneParam
  5. 一个返回值,多个参数 LambdaSingleReturnSingleParam
  6. 一个返回值,多个参数 LambdaSingleRetrunMoreParam
1.无返回值,无参
/***
 * 无返回,无参数
 */
@FunctionalInterface
public interface LambdaNoneReturnParams {
    void test();
}
Test.java中调用
LambdaNoneReturnParams noneReturnParams = ()->{
    System.out.println("hello");
};

方法体中只有一个执行语句时可以省去大括号
LambdaNoneReturnParams noneReturnParams = ()-> System.out.println("hello");
noneReturnParams.test();

2.无返回值,一个参数
/***
 * 无返回值,一个参数
 */
@FunctionalInterface
public interface LambdaNoneReturnSingleParam {
    void test(int n);
}
LambdaNoneReturnSingleParam noneReturnSingleParam = (int a)->{
    System.out.println(a);
};
可以简写一下
LambdaNoneReturnSingleParam noneReturnSingleParam = System.out::println
noneReturnSingleParam.test(10);
3. 无返回值,多个参数
/***
 * 没有返回值,多个参数
 */
@FunctionalInterface
public interface LambdaNoneReturnMoreParam {
    void test(int a,int b);
}
LambdaNoneReturnMoreParam lambdaNoneReturnMoreParam = (int a,int b)->{
    System.out.println(a+b);
};
lambdaNoneReturnMoreParam.test(10,10);
4. 单个返回值,没有参数
/***
 * 有返回值,没有参数
 */
@FunctionalInterface
public interface LambdaSingleReturnNoneParam {
    int test();
}
LambdaSingleReturnNoneParam lambdaSingleReturnNoneParam = ()->{
System.out.print("单个参数,一个返回值");
    return 30;
};
// 如果方法体内只有一个return语句,可以使用简写  
// LambdaSingleReturnNoneParam lambdaSingleReturnNoneParam = ()->30;
System.out.println(lambdaSingleReturnNoneParam.test());
5. 单个返回值,单个参数
/***
 * 一个返回值,一个参数
 */
@FunctionalInterface
public interface LambdaSingleReturnSingleParam {
    int test(int a);
}
LambdaSingleReturnSingleParam lambdaSingleReturnSingleParam = (int a)->{
    return a;
};
// 如果方法体内只有一个return语句,可以使用简写
//        LambdaSingleReturnSingleParam lambdaSingleReturnSingleParam = (int a)->a;

System.out.println(lambdaSingleReturnSingleParam.test(40));
6. 一个返回值,多个参数
//一个返回值,多个参数
@FunctionalInterface
public interface LambdaSingleRetrunMoreParam {
    int test(int a,int b);
}

LambdaSingleRetrunMoreParam lambdaSingleRetrunMoreParam = (int a,int b)->{
    return a+b;
};
// 当方法体重只有一个返回语句时可以简写,比如只有return a+b
// LambdaSingleRetrunMoreParam lambdaSingleRetrunMoreParam = Integer::sum;
System.out.print(lambdaSingleRetrunMoreParam.test(1,1));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值