Lambda表达式基础

1.Lambda表达式使用条件:
  • 方法参数类型必须为接口;
  • 接口只有一个方法,默认实现除外(default);
  • 如果接口中有Object类下的非默认方法除外,如:toString();
  • 自定义接口如果要声明为函数式接口加@FunctionalInterface注解(也可不加);
2.Lambda表达式的三种编写方式:
  • 单语句表达式:
  • 语句块:
  • 方法引用(包括:自身对象引用,构造方法引用,静态方法引用):
public class LambdaDemo{
	@FunctionalInterface//注解可省略
    public interface UserService{
        String getUser(String id);
    }
    public static void proxyGetUser(UserService service){
        String user = service.getUser("123");
        System.out.println(user);
    }
    public static String proxyGetUser2(String id){
        return id;
    }
    @Test
    public void test(){
        //单行语句
        proxyGetUser(a->a);
        //代码块
        proxyGetUser(a->{
            return a;
        });
        //自身方法引用(以下三种方式等价)
        proxyGetUser(String::toString);
        proxyGetUser(id -> id.toString());
        proxyGetUser(new UserService() {
            @Override
            public String getUser(String id) {
                return id.toString();
            }
        });
        //构造方法引用(以下三种方式等价)
        proxyGetUser(String::new);
        proxyGetUser(id -> new String(id));
        proxyGetUser(new UserService() {
            @Override
            public String getUser(String id) {
                return new String(id);
            }
        });

        //静态方法引用(以下三种方式等价)
        proxyGetUser(Test::proxyGetUser2);
        proxyGetUser(id -> Test.proxyGetUser2(id));
        proxyGetUser(new UserService() {
            @Override
            public String getUser(String id) {
                return Test.proxyGetUser2(id);
            }
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值