Lambda表达式的使用
好处
- 避免匿名内部类定义过多
- 简洁代码
使用前提:接口是函数式接口
函数式接口:只包含一个抽象方法的接口
对于函数式接口,我们可以通过lambda表达式来创建该接口的对象
Lambda表达式的使用
假如现在我们需要实现一个匿名内部类,首先定义一个函数式接口,并实例化该接口
interface Like {
void show();
}
public class LambdaTest {
public static void main(String[] args) {
Like like = new Like() {
@Override
public void show() {
System.out.println("Hello World");
}
};
like.show();
}
}
这里可以使用Lambda表达式对匿名内部类进行简化
public static void main(String[] args) {
Like like = () -> {
System.out.println("Lambda表达式");
};
like.show();
}
如果接口中定义的方法有参数,则把参数加在表达式的括号里面
public static void main(String[] args) {
Like like = (int a) -> {
System.out.println("Lambda表达式" + a);
};
like.show();
}
带有参数的Lambda表达式也可以简化
去掉参数类型
public static void main(String[] args) {
Like like = (a) -> {
System.out.println("Lambda表达式" + a);
};
like.show();
}
去掉括号,但如果有多个参数的时候,括号不可省略
public static void main(String[] args) {
Like like = a -> {
System.out.println("Lambda表达式" + a);
};
like.show();
}
去掉花括号:当实现的代码只有一行的时候,花括号也可以去掉
public static void main(String[] args) {
Like like = a -> System.out.println("Lambda表达式" + a);
like.show();
}