程序地带

Lambda表达式推导



Lambda表达式
前言一、Lambda简介二、Lambda表达式的优点三、Lambd表达式的推导过程1.实现类方式2.静态内部类3.局部内部类4.匿名内部类5.Lambda表达式6.Lambda表达式进一步的精简(参数类型)7.Lambda表达式进一步的精简(括号)8.Lambda表达式进一步的精简(花括号)
四、注意事项五、写在最后


前言

Lambda (λ)希腊字母表的第11个字母 读音:lan b(m) da(兰亩达)['læ;mdə]) 基于数学中的λ演算而得名lambda表达式


一、Lambda简介

java的Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 函数里式接口时学习lambda表达式的关键所在。 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 其实质属于函数式编程的概念。


二、Lambda表达式的优点

避免内部类定义过多。 可以让你的代码看起来很简洁 去掉了一些没有意义的代码,只留下了核心的逻辑


既然lambda有这么多的好处 那就不要这些有的没的,直接上代码


三、Lambd表达式的推导过程
1.实现类方式

代码如下(示例):


public class LambdaExpression {
public static void main(String[] args) {
HelloImpl hello = new HelloImpl();
hello.say();
}
}
interface Hello {
void say();
}
//实现类
class HelloImpl implements Hello {
public void say() {
System.out.println("hello");
}
}
2.静态内部类

代码如下(示例):


public class LambdaExpression {
//静态内部类
static class HelloImpl implements Hello {
public void say() {
System.out.println("hello");
}
}
public static void main(String[] args) {
HelloImpl hello = new HelloImpl();
hello.say();
}
}
interface Hello {
void say();
}
3.局部内部类

代码如下(示例):


public class LambdaExpression {
public static void main(String[] args) {
//局部内部类
class HelloImpl implements Hello {
public void say() {
System.out.println("hello");
}
}
HelloImpl hello = new HelloImpl();
hello.say();
}
}
interface Hello {
void say();
}
4.匿名内部类

代码如下(示例):


public class LambdaExpression {
public static void main(String[] args) {
//匿名内部类
Hello hello = new Hello() {
public void say() {
System.out.println("hello");
}
};
}
}
interface Hello {
void say();
}
5.Lambda表达式

接口中值存在一个方法,所以实现类必须实现该方法,所以参照以上的匿名内部类其中new部分以及方法名都是多余的代码 所以省略,就有了以下代码(示例):


public class LambdaExpression {
public static void main(String[] args) {
Hello hello = ()->{
System.out.println("hello");
};
}
}
interface Hello {
void say();
}
6.Lambda表达式进一步的精简(参数类型)

如果方法存在参数,再编写lambda表达式可以省略参数的类型,代码如下(示例):


public class LambdaExpression {
public static void main(String[] args) {
//精简了参数类型
Hello hello = (name)->{
System.out.println(name + "say hello");
};
}
}
interface Hello {
void say(String name);
}
7.Lambda表达式进一步的精简(括号)

如果方法存在参数,再编写lambda表达式可以省略参数的类型,代码如下(示例):


public class LambdaExpression {
public static void main(String[] args) {
//精简了小括号 参数类型
Hello hello = name -> {
System.out.println(name + " say hello");
};
hello.say("macrocsom");
}
}
interface Hello {
void say(String name);
}
8.Lambda表达式进一步的精简(花括号)

如果方法存在参数,再编写lambda表达式可以省略参数的类型,代码如下(示例):


public class LambdaExpression {
public static void main(String[] args) {
//精简了参数类型,小括号,花括号
Hello hello = name -> System.out.println(name + " say hello");
hello.say("macrocsom");
}
}
interface Hello {
void say(String name);
}
四、注意事项
lambda表达式只有一行的时候才能简化成最精简的模式,如果有多行,就要使用代码块接口为函数式接口去掉括号的精简方式只能为一个参数多个参数也可以去掉参数类型,要去掉都去掉
五、写在最后

一个正在学习的程序猿,有什么错误的地方欢迎大家指正 为了诗和远方的门票,努力


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/macrocosm_aj/article/details/109757337

随机推荐

全局变量与缓存的抉择

本文在博客园同步发出 全局变量与缓存的抉择:全局变量与缓存的抉择:全局变量与缓存的抉择:(1)相同点:①往往都是以k...

菲力蒲LY 阅读(736)

24.错误处理中间件

//引入express框架constexpress=require('express');constfs=require('fs');//创建网站服务器...

qq_24871849 阅读(530)

【Mybatis】架构原理学习总结【三】

【Mybatis】架构原理学习总结【三】

【Mybatis】架构原理学习总结【三】Mybatis插件插件介绍Mybatis所允许拦截的方法如下:Mybatis插件原理自定义插件源码分析Mybatis插件一般情况下,...

帽子屋先生 阅读(830)

鲁棒优化理论

鲁棒优化理论初学优化理论,第一篇博客文章,想梳理鲁棒优化理论的框架,包括:详细说明使用何种类型的鲁棒优化方法求解何种问题是有效的、高效的...

Layne Zhao 阅读(319)

分书问题

分书问题(递归,C++实现)问题描述现在有N本书,准备分给N个人。每个人的阅读兴趣,用一个二维数组like[i][...

TOPISI 阅读(626)