Lambda表达式了解之前要先了解匿名内部类,有助于理解
Lambda表达式本身就是一个接口的实现
下面举几个例子:
无返回值的例子
public class Java8Tester {
public static void main(String args[]){
//具体描绘接口方法的实现
GreetingService greetService2 = (message) ->
System.out.println("Hello " + message);
//传参并调用
greetService2.sayMessage("Google");
}
//函数式接口(仅有一个未实现方法的接口,当然里面可有其他的static和default方法)
interface GreetingService {
void sayMessage(String message);
}
}
返回结果:Hello Google
有返回值的例子
class test
{
public static void main(String args[]){
GreetingService greetService1 = message ->
"Hello " + message;
String a = greetService1.sayMessage("Runoob");
System.out.println(a);
}
interface GreetingService {
String sayMessage(String message);
}
}
public class Java8Tester {
public static void main(String args[]){
Java8Tester tester = new Java8Tester();
// 不用类型声明
//不加大括号有返回值的话直接用表达式返回
MathOperation subtraction = (a, b) -> a - b;
// 加上类型声明
//加大括号的话注意如果有返回值需要用return
MathOperation multiplication = (int a, int b) -> { return a * b; };
System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
}
interface MathOperation {
int operation(int a, int b);
}
private int operate(int a, int b, MathOperation mathOperation){
return mathOperation.operation(a, b);
}
}