Lambda表达式---语法
Lambda表达式它由三个部分组成:
- 第一部分为一个括号内用逗号分隔的参数列表,参数即函数式接口里面方法的参数;
- 第二部分为一个箭头符号:
->
; - 第三部分为方法体,可以是表达式和代码块
语法如:parameter -> expression body
语言的设计者们思考了很多如何让现有的功能和lambda表达式友好兼容。于是就有了函数接口这个概念。函数接口是一种只有一个方法的接口,函数接口可以隐式地转换成 Lambda 表达式。
函数式接口的重要属性是:我们能够使用 Lambda 实例化它们,Lambda 表达式让你能够将函数作为方法参数,或者将代码作为数据对待。Lambda 表达式的引入给开发者带来了不少优点:在 Java 8 之前,匿名内部类,监听器和事件处理器的使用都显得很冗长,代码可读>性很差,Lambda 表达式的应用则使代码变得更加紧凑,可读性增强;Lambda 表达式使并行操作大集合变得很方便,可以充分发挥多核 >CPU 的优势,更易于为多核处理器编写代码。
源代码
public class NewFeaturesTester {
public static void main(String args[]){
NewFeaturesTester tester = new NewFeaturesTester();
// 带有类型声明的表达式
MathOperation addtion = (int a , int b) -> a + b;
// 没有类型声明的表达式
MathOperation subtraction = (a , b) -> a - b;
// 带有大括号带有返回语句的表达式
MathOperation multiplication = (int a ,int b) -> {return a * b;};
// 没有大括号和return语句的表达式
MathOperation division = (int a ,int b) -> a/b;
。
// 输出结果
System.out.println("10 + 5 = " + tester.operate(10, 5, addtion));
System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
System.out.println("10 * 5 = " + tester.operate(10, 5, multiplication));
System.out.println("10 / 5 = " + tester.operate(10, 5, division));
// 没有括号的表达式
GreetingService greetService1 = message -> System.out.println("Hello1 "+message);
// 有括号的表达式
GreetingService greetService2 = (message) -> System.out.println("Hello2 "+message);
//调用sayMessage方法输出结果
greetService1.sayMessage("Shiyan");
greetService2.sayMessage("Classmate");
}
//下面定义的一些接口和方法
interface MathOperation{
int operation(int a,int b);
}
interface GreetingService{
void sayMessage(String message);
}
private int operate(int a ,int b,MathOperation mathOperation){
return mathOperation.operation(a , b);
}
}
运行结果
10 + 5 = 15
10 - 5 = 5
10 * 5 = 50
10 / 5 = 2
Hello1 Shiyan
Hello2 Classmate
```
网友评论