美文网首页IT修真院_JAVA
Lambda表达式基本概念

Lambda表达式基本概念

作者: 刻砺思 | 来源:发表于2017-12-29 20:44 被阅读22次

大家好,我是IT修真院上海分院第02期学员,一枚正直善良的java程序员。
今天给分享一下关于Java中Lambda表达式的相关知识。

背景介绍
Lambda表达式式Java8的重要更新,Lambda表达式支持将代码块作为方法参数,可以使用Lambda实现以更简洁的代码来创建只有一个抽象方法的接口的实例

知识剖析
组成:
形参列表,如果形参列表中只有一个参数,可以将圆括号省略
箭头,由英文的中划线和大于符号组成
代码块,如果代码块中只包含一条语句,可以省略代码块的花括号

匿名内部类:
适合于创建那种只需要一次使用的类,创建匿名内部类时会立即创建一个该类的实例,这个类定义立即消失,匿名内部类不能重复使用
必须继承一个父类或实现一个接口

Lambda表达式可用于简化匿名内部类对象,代替匿名内部类的繁琐语法

函数式接口:
函数式接口代表只包含一个抽象方法的接口
Lambda表达式的类型,也被称为目标类型,目标类型必须是函数式接口

Lambda表达式的结果就是被当成对象,所以可以使用Lambda表达式进行赋值

常见问题
Lambda表达式只能为函数式接口创建对象,所以以下的代码会报错

Object obj = () -> System.out.println()

解决方案
可以使用函数式接口对Lambda表达式进行强制类型转换

Object obj =(interface) () -> System.out.println()

编码实战
定义一个函数式接口

/**
 * 函数式接口,只有一个抽象方法
 */
public interface A {
    void testA();
}

使用匿名内部类在传入方法参数时创建A类型的对象:

 lambdaTest.atest(new A() {
            public void testA(){
                System.out.println("这是匿名类的演示");
            }
        });

使用lambda表达式在传入方法参数时创建A类型的对象:

lambdaTest.atest(()-> System.out.println("这是一个Lambda演示"));

扩展思考
Lambda表达式与匿名内部类的区别:
匿名类可以为任意的接口创建实例
Lambda表达式的代码块不允许调用接口中定义的默认方法

更多讨论:
匿名类的好处
答:
可以访问该类定义所在的作用域中的数据,包括私有的数据;
可以对同一个包中的其他类隐藏起来;
可以使用匿名内部类定义回调函数,节省代码;

这个表达式有啥优势??
答:
通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,可以进一步节省匿名内部类的代码

lambda的使用场景
答:
可能是在GUI里,添加监听器之类的时候

PPT:https://ptteng.github.io/PPT/PPT-java/java-task10-lambda.html
视频:https://v.qq.com/x/page/y0526976l5q.html

相关文章

  • Java Lambda 表达式源码分析

    Lambda 表达式是什么?JVM 内部究竟是如何实现 Lambda 表达式的?为什么要这样实现? 基本概念 La...

  • Java8(4)Lambda表达式的真实面目

    前面三篇讲了lambda表达式的一些基本概念和核心类Stream的基本操作,那么lambda表达式的实现原理到底是...

  • JDK8之Lambda表达式

    Lambda表达式 Lambda表达式介绍 举例: lambda表达式语法 lambda表达式中的this概念 L...

  • java8利用lambda表达式来封装jedis的连接池资源

    lambda表达式 什么是lambda? “Lambda 表达式”(lambda expression)是一个匿名...

  • lambda表达式

    lambda表达式 什么是Lambda表达式 Lambda: In programming languages s...

  • Lambda表达式

    Lambda表达式 >> Lambda表达式和高阶方法Lambda表达式是一种匿名方法的表示方式。Lambda表达...

  • Lambda

    一、表达式 1.1 Lambda表达式格式: 1.2 有效的Lambda表达式 1.3 Lambda示例 二、函数...

  • C++ lambda表达式

    lambda表达式 目录 一、开篇 二、lambda初识 三、lambda基本用法 四、lambda表达式捕获列表...

  • Java8学习笔记--Lambda表达式,Functional接

    主要内容 Lambda表达式 Functional接口 方法引用 1.Lambda表达式 Lambda表达式这个新...

  • Lambda表达式

    基本概念 jdk8中新增了lambda表达式,lambda是一个希腊字母,长得像汉字“入”。先看一个例子: sor...

网友评论

    本文标题:Lambda表达式基本概念

    本文链接:https://www.haomeiwen.com/subject/edswgxtx.html