-
为什么使用lambda表达式
- 避免匿名内部类定义过多
- 简化代码
-
函数式接口
一个接口如果只包含一个抽象方法,就是函数式接口。
interface Move{ void action(int a,String b); }
-
lambda表达式的形式
(para1,para2,...)->{ 具体操作... };
-
对比学习lambda表达式
public class TestLambda { static class DoSomething2 implements Action{ @Override public void say() { System.out.println("2.静态内部类"); } } public static void main(String[] args) { // 外部类,创建对象,调用方法 Action action = new DoSomething(); action.say(); // 静态内部类 action = new DoSomething2(); action.say(); class DoSomething3 implements Action{ @Override public void say() { System.out.println("3.局部内部类"); } } // 局部内部类 action = new DoSomething3(); action.say(); //匿名内部类 action = new Action() { @Override public void say() { System.out.println("4.匿名内部类"); } }; action.say(); //lambda表达式 action = () -> { System.out.println("5.lambda表达式"); }; action.say(); } } // 定义一个函数式接口,只能有一个抽象方法 interface Action{ void say(); } class DoSomething implements Action{ @Override public void say() { System.out.println("1.外部类实现接口"); } }
根据上面的代码,可以用不同方式实现接口的方法。但是很明显,lambda表达式更加简洁。
-
lambda表达式的语法进一步简化
- 去掉参数的类型(如果要去掉就去掉所有参数的类型)
- 只有一个参数的,可以去掉括号(同时可以去掉参数类型)
- 表达式只有一行的,可以去掉大括号
Java Lambda表达式
最新推荐文章于 2024-09-25 11:06:23 发布