Java Lambda表达式

Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。

Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。

使用 Lambda 表达式可以使代码变的更加简洁紧凑。

 

语法

lambda 表达式的语法格式如下:

(parameters) -> expression
或
(parameters) ->{ statements; }

特征

以下是lambda表达式的重要特征:

  • 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
  • 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
  • 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
  • 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。

示例

 1 package com.java.demo;
 2 
 3 public class LambdaDemo {
 4     public static void main(String[] args) {
 5         print(new MyMath() {
 6             @Override
 7             public int sum(int x, int y) {
 8                 return x+y;
 9             }
10         },100,200);
11 
12         print((int x,int y) -> {
13             return x+y;
14         },100,200);
15     }
16 
17     public static void print(MyMath m,int x,int y){
18         int num = m.sum(x,y);
19         System.out.println(num);
20     }
21 
22     static interface MyMath{
23         int sum(int x,int y);
24     }
25 }

基本使用步骤:

  1. 定义一个仅含抽象方法的函数式接口
  2. 声明一个该接口的变量来实现对抽象方法的lambda表达式实现形式(此步骤可以压缩到下一步中)
  3. 使用一个调用该接口类型的变量的方法,传入已经第二步中的接口变量(也可以直接传入lambda表达式)

个人目前的理解是,lambda表达式只能操作那些只有一个抽象类的接口,可以把它理解为一个匿名内部类,实际上lambda表达式的效果与匿名内部类的效果等同。

原文地址:https://www.cnblogs.com/misaki-workshop/p/13462120.html