-
Lambda表达式简介
-
Lambda表达式就是一种匿名函数,如果不了解什么是匿名函数,
-
可以参考:Java匿名内部类
-
Lambda表达式语法:
(argument) -> (body),
例如:
(arg1, arg2) -> {body}
(a1 arg1, a2 arg2) -> {body}
- 下面来看一些例子:
(int a, int b) -> {return a + b;};
(a, b) -> {return a + b; };
(a, b) -> a + b;
上面三句的效果是一样的
() -> {System.out.println("没有参数的Lambda表达式");};
() -> System.out.println("没有参数的Lambda表达式");
-
根据以上例子可见,
Lambda表达式可以有零个或多个参数,
参数类型可以指定,也可以根据上下文进行推导,(int a, int b)和(a, b)效果一样。 -
如果方法体只有一条语句,则可以省略{}。
-
根据Runnable定义一个RunnableIn接口,该接口是一个函数式接口(函数式接口:只包含一个抽象方法的接口)
@FunctionalInterface
public interface RunnableIn {
public abstract int run(int a, int b);
}
public class TestLambda {
public static void main(String[] args) {
Runnable r1 = new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类");
}
};
Runnable r2 = () -> System.out.println("Lambda表达式");
RunnableIn r3 = (a, b) -> {return a + b; };
RunnableIn r4 = (int a, int b) -> {return a + b; };
r1.run();
r2.run();
int c = r3.run(1,3);
System.out.println(c);
int d = r4.run(2, 4);
System.out.println(d);
}
}
输出结果:
匿名内部类
Lambda表达式
4
6
- 由此可见,使用Lambda表达式,直接实现方法,简化了写法。