[Java]“语法糖”系列(二)之Lambda表达式/匿名函数(Lambda Expression)

本文介绍了Java 8中的Lambda表达式,一种用于简化匿名类的语法糖。通过实例展示了如何使用Lambda表达式实现函数行为,如计算税收,解释了Lambda表达式的基本语法和函数式接口的概念。
摘要由CSDN通过智能技术生成

>什么是Lambda表达式

    简短的说,Lambda表达式是一种用于取代匿名类,把函数行为表述为函数式编程风格的一种匿名函数。

    匿名类大家自然熟悉,上面那句话提到了“函数行为”,那么什么是函数行为?


>函数行为

    假设有这样一个应用场景:计算机要通过给定的某工人的薪水计算出该工人要交纳多少税。我们有以下代码:

@FunctionalInterface
interface TaxFunction{
	double tax(double salary);
}

class Computer{
	public double taxing(double salary,TaxFunction func){
		return func.tax(salary);
	}
}

    计算机计算税收,应当有一个计算方式,这个计算方式就是TaxFunction接口类中给出的抽象方法tax。之所以要设计成抽象的方法,因为针对不同的收入阶层或是企业类型,可能会有不同的税收方法。假设对于工人A,税收为其总收入salary的10%:

Computer computer = new Computer();
double hisTax = computer.taxing(251, new TaxFunction() {
	@Override
	public double tax(double salary) {
		return salary*0.1;
	}
});

    这其中我们使用了一个匿名类TaxFunction并直接重写了tax方法。这个tax方法就是一种函数行为,其描述了这样一种行为:x->f(x)=x*0.1,也就是传入一个状态值x,返回经过函数f映射后的值0.1*x。

    这是一种函数式编程的思想。关于函数式编程,还可以查看>这篇文章<中第一个例子辅助理解。


>短小精悍的Lambda表达式

   在上面那个例子中,很容易注意到我们只为了完成 x->f(x)=x*0.1 的映射,就要new 一个匿名类 TaxFunction写上足足至少四行代码来完成这个函数行为。Java本来就以冗余被人所诟病,这样的写法虽然看上去没什么问题,但是也暴露了Java代码“又臭又长”的缺点。

   而Jav

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值