Lambda表达式和函数式接口

Kotlin中大量使用了Lambda表达式,Java中使用的比较少。毕竟和Java最初的设计思想不是很一致。

函数式编程思想的概述:忽略面向对象的复杂语法,强调做什么,而不是以什么形式做。

想做什么,而不是怎么做。

Java8中加入了lambda表达式

()-> sout("多线程任务执行");

1.前面一对小括号即run方法的参数,代表不需要任何条件。

2.中间箭头代表将前面的参数传递给后面的代码;

3.后面的输出语句即业务逻辑代码。

Lambda表达式,标准格式:三部分

1.一些参数

2.一个箭头

3.一段代码

Lambda省略格式:可推导就可省略。

Lambda使用前提:

1.使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法。

2.使用Lambda必须具有上下文推断。

备注:有且仅有一个抽象方法的接口,称为--函数式接口

 

在Java中有且仅有一个抽象方法的接口。

语法糖:是指使用更加方便,但是原理不变的代码语法。

从应用层面来讲,Java中的Lambda可以被当做是匿名内部类的语法糖,但是二者在原理上是不同的。

函数式接口:有且只有一个抽象方法的接口,但是可以包含其他方法(默认,静态,私有);

public interface 接口名称{

返回值类型 方法名(参数列表);

}

@FunctionalInfterface 函数式接口的注解。

作用:可以检测接口是否是一个函数式接口

是:编译成功

否:编译失败(接口中的抽象方法个数多余1个)

 

使用:一般可以作为方法的参数和返回值类型;

 

日志工具类:一般有7个级别,根据日志的级别,显示日志信息的方法。

Lambda特点:延时加载,使用前提,必须有函数式接口。满足条件才能执行,不满足条件不执行。

Lambda做为参数。

Lambda做为返回值。

 

常用的函数式接口:java.util.function

1.Supplier接口:T get().用来获取一个泛型参数指定类型的对象数据。

被称为生产型接口,指定接口的泛型是什么类型,那么接口中的get方法就会产生什么类型的数据。

2.consumer接口:

void accept(T t)用于消费一个指定泛型的数据。默认方法andThen(),可以把两个Consumer接口组合到一起,在对数据进行消费。

3.Predicate接口:对某种类型数据进行判断。boolean test(T t),默认方法and,or,negate,对应着与或非三个逻辑运算符。 可以用于对数据集合中的数据进行筛选。

4.Function接口:Function<T,R>用来根据一个类型的数据得到另一个类型的数据,前者为前置条件,后者为后置条件。也成为转换接口。

抽象方法:R apply(T t);传入T类型参数,获取R类型结果。

默认方法:andThen可以把两个接口组合到一块。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值