Java.JDK8新特性

1.Lambda表达式

Lamdba表达式是一个匿名函数,主要用来优化匿名内部类的结构

匿名内部类写法(匿名内部类用于接口中,抽象方法(void test()))重写抽象方法

lambda表达式:

(参数)->{

}

2.Lambda表达式省略写法

①如果方法体只有一句话,则可以省略方法中的花括号

②如果方法形参只有一个参数,则可以省略圆括号

③如果方法体只有一个return语句,则return也可以省略

3.使用限制

lambda表达式使用有几个条件需要特别注意

①lambda表达式是针对接口才能使用

②接口中必须有且仅有一个抽象方法,能被@functionalInterface注解修饰的方法

4.函数式接口

lambda表达式是针对接口的,有且仅有一个抽象方法,这种接口称为函数接口。lambda表达式使用时不关心接口名,抽象方法名,只关心抽象方法的参数列表和返回类型。因此JDK8提供了大量的常用的函数式接口。

这些函数接口都在java.util.function包下,常用接口有supplier接口,function接口,consumer接口,predicate接口。

4.1supplier

supplier表示供应商,供给的意思,这类接口的特点是无参有返回值

4.2consumer

consumer表示消费的意思,这类接口的特点是:有参无返回值

4.3function

function表示方法函数的意思,这类接口的特点是:有参有返回值

4.4predicate

predicate接口用来对某种类型的数据进行判断,从而得到一个boolean类型的结果

5.方法引用(::)

方法引用是一种更简洁的lambda表达式,如果一个lambda表达式的方法体只是在调用一个方法时,就可以使用方法引用来简化他

①对象引用实例方法

对象名::方法名

例:A a = new Demo01()::aaa;//aaa是一个方法

②类名引用静态方法

类名::方法名

例:A a = Demo1:bbb;

③类名引用实例方法

类名::方法名

例:A a = Demo1:ccc;

        a.test(new Demo1());

④引用构造方法

类::new

例:A a = Demo1::new;

6.Stream流

对一个集合体做过滤,排序,统计等操作时,可以使用stream流来简化操作

①stream对象的获取

(1)所有collection对象都有stream方法

(2)stream.of


版权声明:本文为qq_60154877原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。