Java8的λ表达式的用法

  介绍

本篇内容主要讲解“Java8的λ表达式的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java8的λ表达式的用法”吧!

一、Java 8 Lambda 表达式

, Lambda 表达式(闭包),它是推动,Java 8,发布的最重要新特性只允许把函数作为一个方法的参数(函数作为参数传递进方法中).

1.1语法

,,,,(参数),→,表达或(参数),→{语句;,}

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

·,,,,,,,,可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。

·,,,,,,,,可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。

·,,,,,,,,可选的大括号:如果主体包含了一个语句,就不需要使用大括号。

·,,,,,,,,可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
,

1.2λ表达式实例

 package  com.lambda;
  
  public  class  Java8Tester  {
  ,,,public  static  void 主要(String 参数[]),{
  ,,,,,,,Java8Tester  tester =, new  Java8Tester ();
  ,,,,,,,//,类型声明
  ,,,,,,,MathOperation  addition =, (int ,, int  b),→, a  +, b;
  ,,,,,,,//,不用类型声明
  ,,,,,,,MathOperation  subtraction =, (a, b),→, a 作用;b;
  ,,,,,,,//,大括号中的返回语句
  ,,,,,,,MathOperation  multiplication =, (int ,, int  b),→, {
  ,,,,,,,,,,,return  a  *, b;
  ,,,,,,,};
  ,,,,,,,//,没有大括号及返回语句
  ,,,,,,,MathOperation  division =, (int ,, int  b),→, a /, b;
  ,,,,,,,System.out.println(“10 +祝福;5,=,,,+,tester.operate(10日,5日,除了));
  ,,,,,,,System.out.println(“10,安康;5,=,,,+,tester.operate(10日,5日,减法));
  ,,,,,,,System.out.println (“10, x  5,=,,, +, tester.operate(10日,5日,乘法));
  ,,,,,,,System.out.println (“10,/, 5,=,,, +, tester.operate(10日,5日,部门));
  ,,,,,,,//,不用括号
  ,,,,,,,GreetingService  greetService1 =, message →
  ,,,,,,,,,,,,,,,System.out.println (“Hello “, +,消息);
  ,,,,,,,//,用括号
  ,,,,,,,GreetingService  greetService2 =,(消息),→
  ,,,,,,,,,,,,,,,System.out.println (“Hello “, +,消息);
  ,,,,,,,greetService1.sayMessage (“Runoob");
  ,,,,,,,greetService2.sayMessage (“Google");
  ,,,}
  ,,,interface  MathOperation  {
  ,,,,,,,int 操作(int ,, int  b);
  ,,,}
  ,,,interface  GreetingService  {
  ,,,,,,,void  sayMessage (String 消息);
  ,,,}
  ,,,private  int 操作(int ,, int  b, MathOperation  mathOperation), {
  ,,,,,,,return  mathOperation.operation (a, b);
  ,,,}
  }

输出结果:

 Java8的λ表达式的用法

使用λ表达式需要注意以下两点:

·,,,,,,,,λ表达式主要用来定义行内执行的方法类型接口,例如,一个简单方法接口。在上面例子中,我们使用各种类型的λ表达式来定义MathOperation接口的方法,然后我们定义了sayMessage的执行。

,,,,,λ表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。

1.3 lambda 变量作用域

,,null

Java8的λ表达式的用法