- lambda表达式的出现,简单来看是为了简化匿名内部类繁琐的代码,而匿名内部类的结构是:有个接口,接口中有个方法,通过匿名内部类的方式实现该方法,至此匿名内部类完成。匿名内部类本身的目的也是简化代码,如果不用匿名内部类,你需要新建个一个类,然后去实现这个接口,再实现方法,这样更加繁琐。
- 基于此java8新增了lambda表达式,可以简化匿名内部类实现方式的繁琐,但是它的作用和匿名内部类是一样的,创建一个接口的实例而已。其实lambda表达式只是创建接口实例方式的其中一种,还有方法引用和构造方法引用,其实构造方法引用也是方法引用之一,故方法引用有4种。
- 函数式接口实例的生成方式及定义 定义:果一个接口中,有且只有一个抽象的方法(Object类中的方法不包括在内),那这个接口就可以被看做是函数式接口。
3.1 lambda表达式语法:(参数)->{函数体},基于很多情况可以省略一些部分。只要lambda表达式符合该接口中抽象方法的规则即可,有没有接收参数,有没有返回值。
3.2 方法引用,这里的方法引用有静态方法引用和成员方法引用。(1).静态方法引用:类名::方法名,(2).成员方法引用:对象::方法名,(3).类名::实例方法名。此方法也得符合该接口中的抽象方法的规则,有没有接收参数,有没有返回值。
3.3 构造方法引用,语法:类名::new,构造方法引用同样符合规则即可。 - 这里是java8 已经提供的比较重要的函数式接口,列举一下 不细说。Function、Supplier、Predicate、Consumer,还有其他的。
- stream 流
Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。通常编写并行代码很难而且容易出错, 但使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。所以说,Java 8 中首次出现的 java.util.stream 是一个函数式语言+多核时代综合影响的产物。
java8新特性 梳理
最新推荐文章于 2024-06-18 14:44:48 发布