Lambda 表达式是一个匿名函数,基于数学中的λ演算得名,也可称为闭包,下面的话就来通文章内容对它再进行一个详细的了解吧。
Lambda表达式是推动Java 8发布的重要新特性,它允许把函数作为一个方法的参数。
下面的话就通过代码来进一步的了解它吧。
先定义一个计算数值接口,代码:
// 可计算接口 public interface Calculable { // 计算两个int数值 int calculateInt(int a, int b); }
Calculable接口只有一个方法calculateInt,参数是两个int类型,返回值也是int类型,代码:
public class Test { /** * 通过操作符,进行计算 * * @param opr 操作符 * @return 实现Calculable接口对象 */ public static Calculable calculate(char opr) { Calculable result; if (opr == '+') { // 匿名内部类实现Calculable接口 result = new Calculable() { // 实现加法运算 @Override public int calculateInt(int a, int b) { return a + b; } }; } else { // 匿名内部类实现Calculable接口 result = new Calculable() { // 实现减法运算 @Override public int calculateInt(int a, int b) { return a - b; } }; } return result; } }
方法calculate当中opr参数是运算符,返回值是实现Calculable接口对象,代码第13行和第,23行都采用匿名内部类实现Calculable接口,代码第16行实现加法运算,代码第26行实现减法运算。
public static void main(String[] args) { int n1 = 10; int n2 = 5; // 实现加法计算Calculable对象 Calculable f1 = calculate('+'); // 实现减法计算Calculable对象 Calculable f2 = calculate('-'); // 调用calculateInt方法进行加法计算 System.out.println(n1 + "+" + n2 + "=" + f1.calculateInt(n1, n2)); // System.out.printf("%d + %d = %d \n", n1, n2, f1.calculateInt(n1, n2)); // 调用calculateInt方法进行减法计算 System.out.println(n1 + "-" + n2 + "=" + f1.calculateInt(n1, n2)); // System.out.printf("%d - %d = %d \n", n1, n2, f2.calculateInt(n1, n2)); }
代码第5行当中,f1是实现加法计算Calculable对象,代码第7行当中,f2是实现减法计算Calculable对象,代码第9行和第12行才进行方法调用。
上面的代码当中,列除了2种输出方式,下面的话,就来简单的介绍一下Java当中,比较常见的输出函数:
输出结果:
10+5=15 10-5=15
示例:
使用匿名内部类的方法calculate代码很臃肿,Java 8采用Lambda表达式能够替代匿名内部类。修改之后的通用方法calculate代码:
/** * 通过操作符,进行计算 * @param opr 操作符 * @return 实现Calculable接口对象 */ public static Calculable calculate(char opr) { Calculable result; if (opr == '+') { // Lambda表达式实现Calculable接口 result = (int a, int b) - > { return a + b; }; } else { // Lambda表达式实现Calculable接口 result = (int a, int b) - > { return a - b; }; } return result; }
代码第10行和第15行用Lambda表达式替代匿名内部类,可以看出,代码变得简洁,通过以上示例我们发现,Lambda表达式是一个匿名函数(方法)代码块,可以作为表达式、方法参数和方法返回值。
Lambda表达式标准语法形式:
(参数列表) -> { // Lambda表达式体 }
java Lambda表达式就给你介绍到这里啦,请多多的关注奇Q工具网吧,更多java入门知识,可以为你分享呢。
推荐阅读:
java使用Lambda表达式遍历Iterator迭代器详解