介绍
本篇内容主要讲解“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); ,,,} }
输出结果:
使用λ表达式需要注意以下两点:
·,,,,,,,,λ表达式主要用来定义行内执行的方法类型接口,例如,一个简单方法接口。在上面例子中,我们使用各种类型的λ表达式来定义MathOperation接口的方法,然后我们定义了sayMessage的执行。
,,,,,λ表达式免去了使用匿名方法的麻烦,并且给予Java简单但是强大的函数化的编程能力。
1.3 lambda 变量作用域
,,null