Java8新特性3-函数式接口和Lambda表达式

1.函数式接口

1.只包含一个方法的接口(有且只有一个方法,并且该方法必须是抽象方法)叫函数式接口;

2.Java 8中通过@FunctionalInterface注解,将一个接口标注为函数式接口,该接口只能包含一个抽象方法,但是可以有一个或多个默认接口方法和静态方法;

3.函数式接口是为Java 8中的lambda而设计的,lambda表达式的方法体其实就是函数接口的实现;

 2.Lambda 表达式

1.Lambda 表达式是一个匿名方法,它是一个函数式接口的具体实现方式;

2.一个函数式接口都可以用Lambda表达式来实现;

3.语法结构:

 

Lambda表达式语法结构

 

包含三个部分

 

public void aa (String s, int a) {

 

。。。。。

 

。。。。。

 

}

 

 (String s, int a) -> {

 

。。。。。

 

。。。。。

 

}

1、一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数;

2、一个固定的箭头符号:->

3、一个方法体,方法体可以是表达式,也可以是代码块,方法体是函数式接口里面方法的具体实现;

总体结构如下:

(parameters) -> expression  或者  (parameters) -> { statements; }

1、括号里的形式参数类型可以省略,编译器会根据上下文来推测参数的类型,你也可以显式地指定参数类型;

2、如果没有形式参数,则括号里空着;

3、方法体,如果有多行功能语句用大括号括起来,如果只有一行功能语句则可以省略大括号,(一般地,如果Lambda的功能语句块比较复杂,我们都用大括号包起来);

4、如果Lambda方法体只有一行return语句,则如果省略了大括号,那么return可以省略;

5、如果参数列表只有一个参数,则参数列表的小括号可以省略;

 

 

 

 

 

 

 

posted on 2023-02-11 17:22  companion  阅读(27)  评论(0编辑  收藏  举报