- 广义上,带有参数变量的表达式都被称为lambda表达式。java中lambda表达式是一段可以传递的代码。它可能不会被立即执行。
- java中类似lambda代码块的常见方式:
- 线程的run代码块
- 比较器比较方法代码块
- 回调 ex:按钮的点击事件回调代码块
- 原来的代码块实现方法比较臃肿,而且lambda表达式是当前比较时髦的函数式编程语言的特性
- lambda表达式的格式:
- (param1,param2) -> {dowork();}
- param的对象类型一般不用声明。param可空。
- 当有返回值而代码块只有一个简单语句时,可以不明确使用return,编译器会使用该简单语句的返回值作为返回值,可见条目6的代码
- lambda表达式使用场景:需要一个单一方法的接口的实现类的对象。
- 下面的代码定义了一个Runnable的对象,可以对比传统实现方法
- Runnable printer = () -> {System.out.println(“from lambda”);};
如果表达式已经被实现过,不需要自己再重复实现:
interface GetMax{ int getTheMax(int a,int b); } //要实现上述接口的一个对象如下 GetMax getter = Math::max; //等同于 GetMax getter2 = (x, y) -> {return Math.max(x, y);}; //省略return GetMax getter3 = (x, y) -> Math.max(x, y);
- 可以使用的情况包括:对象的实例方法,类的静态方法,类的实例方法(eclipse4.4编译不通过)。
lambda表达式可以直接使用lambda表达式外面的局部变量,但是不能对其进行修改。
public static void repeatMessage(String text, int count) { Runnable r = () -> { System.out.println(text);//正常 count++;//报错 }; new Thread(r).start(); }
JavaSE8新特性——lambda表达式1
最新推荐文章于 2024-07-08 17:49:05 发布