广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java中Lambda表达式的进化之路详解
  • 607
分享到

Java中Lambda表达式的进化之路详解

2024-04-02 19:04:59 607人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录Lambda表达式的进化之路为什么要使用Lambda表达式Lambda表达式的注意点下面是Lambda表达式的实现过程1.最开始使用的是定义外部实现类来完成接口2.开始使用静态内

Lambda表达式的进化之路

为什么要使用Lambda表达式

  • 可以简洁代码,提高代码的可读性
  • 可以避免匿名内部类定义过多导致逻辑紊乱
  • 在原先实现接口抽象方法的时候,需要通过定义一个实现接口的外部类来实现,后面变为定义内部静态类,然后变为用局部内部类实现,再后面变成了定义匿名内部类来实现,最后的最后,为了代码的更加简洁,推出了Lambda表达式,最终实现了用一行代码完成之前多行代码的效果

Lambda表达式的注意点

  • Lambda表达式实际上属于是函数式编程的概念,所以在使用的时候要知道是否属于函数式编程
  • Lambda表达式的实现依赖于接口和父类,所以必须有两者之一才能实现Lam表达式
  • Lambda表达式实现的接口中要求只有一个抽象方法,如果有多个抽象方法就无法使用Lambda表达式来编程
  • Lambda表达式即适用于无参方法,也适用于含参方法
  • Lambda表达式最早在jdk 8中开始出现,所以只有 JDK 8 以后的版本才支持

下面是Lambda表达式的实现过程

1.最开始使用的是定义外部实现类来完成接口


public class tt1 {
    public static void main(String[] args) {
        //用外部类来实现接口,首先需要在主类外定义另外一个类,之后再在内部类中创建对象
        //这样对于那些只需要使用一次的接口来说比较的麻烦,而且也会使整个代码变得臃肿,给其他开发人员带来阅读困难
        lover l1 = new lover();
        l1.love();
    }
}
//定义接口
interface ILove {
    void love();
}
//外部实现类
class lover implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//输出为:I love you lover ---> 1

2.开始使用静态内部类来实现


public class tt1 {
    //静态内部类
    static class lover2 implements ILove{
        @Override
        public void love() {
            System.out.println("I love you my lover ---> 2");
        }
    }
    public static void main(String[] args) {
        //用外部类来实现接口,首先需要在主类外定义另外一个类,之后再在内部类中创建对象
        //这样对于那些只需要使用一次的接口来说比较的麻烦,而且也会使整个代码变得臃肿,给其他开发人员带来阅读困难
        ILove l1 = new lover1();
        l1.love();
        //使用静态内部类来实现,由于实现类和main方法位于相同主类中,方便了开发人员阅读,但是实现过程还是比较麻烦
        ILove l2 = new lover2();
        l2.love();
    }
}
//定义一个函数式接口
interface ILove {
    void love();
}
//外部实现类
class lover1 implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//输出为:I love you my lover ---> 1
// I love you my lover ---> 2

3.使用局部内部类使用


public class tt1 {
    //静态内部类
    static class lover2 implements ILove{
        @Override
        public void love() {
            System.out.println("I love you my lover ---> 2");
        }
    }
    public static void main(String[] args) {
        //用外部类来实现接口,首先需要在主类外定义另外一个类,之后再在内部类中创建对象
        //这样对于那些只需要使用一次的接口来说比较的麻烦,而且也会使整个代码变得臃肿,给其他开发人员带来阅读困难
        ILove l1 = new lover1();
        l1.love();
        //使用静态内部类来实现,由于实现类和main方法位于相同主类中,方便了开发人员阅读,但是实现过程还是比较麻烦
        ILove l2 = new lover2();
        l2.love();
        //局部内部类
        class lover3 implements ILove{
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 3");
            }
        }
        ILove l3 = new lover3();
        l3.love();
    }
}
//定义一个函数式接口
interface ILove {
    void love();
}
//外部实现类
class lover1 implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//输出为:I love you my lover ---> 1
// I love you my lover ---> 2
// I love you my lover ---> 3

4.使用匿名内部类实现接口


public class tt1 {
    //静态内部类
    static class lover2 implements ILove{
        @Override
        public void love() {
            System.out.println("I love you my lover ---> 2");
        }
    }
    public static void main(String[] args) {
        //用外部类来实现接口,首先需要在主类外定义另外一个类,之后再在内部类中创建对象
        //这样对于那些只需要使用一次的接口来说比较的麻烦,而且也会使整个代码变得臃肿,给其他开发人员带来阅读困难
        ILove l1 = new lover1();
        l1.love();
        //使用静态内部类来实现,由于实现类和main方法位于相同主类中,方便了开发人员阅读,但是实现过程还是比较麻烦
        ILove l2 = new lover2();
        l2.love();
        //局部内部类
        class lover3 implements ILove{
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 3");
            }
        }
        ILove l3 = new lover3();
        l3.love();
        //使用内部匿名类
        ILove l4 = new ILove() {
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 4");
            }
        };
    }
}
//定义一个函数式接口
interface ILove {
    void love();
}
//外部实现类
class lover1 implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//输出为:I love you my lover ---> 1
// I love you my lover ---> 2
// I love you my lover ---> 3
// I love you my lover ---> 4

5..最后使用Lambda表达式实现函数式接口


public class tt1 {
    //静态内部类
    static class lover2 implements ILove{
        @Override
        public void love() {
            System.out.println("I love you my lover ---> 2");
        }
    }
    public static void main(String[] args) {
        //用外部类来实现接口,首先需要在主类外定义另外一个类,之后再在内部类中创建对象
        //这样对于那些只需要使用一次的接口来说比较的麻烦,而且也会使整个代码变得臃肿,给其他开发人员带来阅读困难
        ILove l1 = new lover1();
        l1.love();
        //使用静态内部类来实现,由于实现类和main方法位于相同主类中,方便了开发人员阅读,但是实现过程还是比较麻烦
        ILove l2 = new lover2();
        l2.love();
        //局部内部类
        class lover3 implements ILove{
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 3");
            }
        }
        ILove l3 = new lover3();
        l3.love();
        //使用内部匿名类
        ILove l4 = new ILove() {
            @Override
            public void love() {
                System.out.println("I love you my lover ---> 4");
            }
        };
        l4.love();
        //使用Lambda表达式实现接口
        ILove l5 = () ->{
            System.out.println("I love you my lover ---> 5");
        };
        l5.love();
    }
}
//定义一个函数式接口
interface ILove {
    void love();
}
//外部实现类
class lover1 implements ILove{
    @Override
    public void love() {
        System.out.println("I love you my lover ---> 1");
    }
}

//输出为:
I love you my lover ---> 1
I love you my lover ---> 2
I love you my lover ---> 3
I love you my lover ---> 4
I love you my lover ---> 5

关于Lambda表达式的更加极致的简化(针对有参数的Lambda表达书)

  • 简化数据类型 在Lambda表达式中可以将参数的数据类型省略,只留下一个数据名称。比较特殊的是如果有多个参数,省略的时候应该将所有参数的数据类型都省略,不然就全部不省略,而且需要用括号将参数包含在内。
  • 省略括号 参照上一条,只有一个参数要求的时候才可以省略括号省略花括号
  • 在Lambda表达式中,只有当输出语句或者代码只有一行的时候可以省略花括号。假如有多条执行代码,还是需要用花括号将代码包含在内

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Java中Lambda表达式的进化之路详解

本文链接: https://www.lsjlt.com/news/156280.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中Lambda表达式的进化之路详解
    目录Lambda表达式的进化之路为什么要使用Lambda表达式Lambda表达式的注意点下面是Lambda表达式的实现过程1.最开始使用的是定义外部实现类来完成接口2.开始使用静态内...
    99+
    2022-11-12
  • java lambda表达式详解
    一、Lambda初识 我们知道,在Java中,接口是不能实例化的,但是接口对象可以指向它的实现类对象。如果接口连实现对象都没有呢?那还可以使用匿名类的方式,如下: public class JavaTest { public ...
    99+
    2023-09-15
    java servlet jvm
  • Java学习之Lambda表达式的使用详解
    目录Lamda表达式函数式接口Lambda表达式的推导函数式接口的不同类型Lambda表达式与函数式接口的简单应用Lambda表达式的优缺点Lamda表达式 λ希腊字母...
    99+
    2022-12-26
    Java Lambda表达式用法 Java Lambda表达式 Java Lambda
  • Java 8的Lambda表达式详解
    本篇内容介绍了“Java 8的Lambda表达式详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!功能接口只包含一个方法的接口被称为功能接口...
    99+
    2023-06-17
  • Java中Lambda表达式的使用详解
    目录理解函数式接口以及 Lambda表达式的发展过程Lambda表达式及语法一起来看看具体的使用你需要注意什么Lambda的实际运用1.对集合排序2.遍历集合3.遍历集合(带条件)4...
    99+
    2022-11-12
  • 详细解读Java的Lambda表达式
    目录Lambda 表达式Lambada 简介简单的示例Lambda 表达式的组成部分函数式接口介绍几个 Java 中重要的函数接口Lambda 表达式 最早接触到 Lambda 表达...
    99+
    2023-05-14
    Java Lambda表达式 Lambda表达式
  • Java中Lambda表达式使用及详解
    Java中Lambda表达式使用及详解 前言 一、Lambda表达式的简介 Lambda表达式(闭包):java8的新特性,lambda运行将函数作为一个方法的参数,也就是函数作为参数传递到方法中。使用lambda表达式可以让代码更加...
    99+
    2023-08-16
    java
  • Java中Lambda表达式使用详细解读
    目录前言一、Lambda表达式的简介二、Lambda表达式对接口的要求1.函数式接口2.@FunctionalInterface3.Lambda表达式的语法1.Lambda表达式的基...
    99+
    2023-05-18
    java  Lambda表达式使用 java  Lambda表达式 Lambda表达式使用
  • C#3.0中Lambda表达式详解
    在C#2.0中,微软给我们带来了一些新的特性,例如泛型,匿名委托等。然而,这些新的特性多多少少会给人一种从别的语言中“抄”来的感觉(例如泛型类似C++的模板,一些特性类似Java中的...
    99+
    2022-11-15
    C# Lambda
  • C++学习之Lambda表达式的用法详解
    目录简介捕获原理Lambda回调简介 Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中...
    99+
    2022-11-13
  • 进阶JAVA篇- Lambda 表达式与 Lambda 表达式的省略规则
    目录         1.0 什么是 Lambda 表达式?         1.1 既然跟匿名内部类相关,先来回顾匿名内部类。          1.2 Lambda 表达式与匿名内部类之间的关系。         1.3 函数式接口  ...
    99+
    2023-10-20
    java python 开发语言
  • Java使用lambda表达式简化代码的示例详解
    目录目的推理一下实现接口,使用方法内部类实现接口,使用方法局部内部类实现接口,使用方法匿名内部类实现接口,使用方法使用lamda表达式的,实现方法可带参数只有一个参数有返回值只有一条...
    99+
    2022-11-13
    Java lambda表达式简化代码 Java lambda表达式 Java 简化代码
  • 详解Java函数式编程和lambda表达式
    目录为什么要使用函数式编程JDK8接口新特性函数接口方法引用类型推断变量引用级联表达式和柯里化为什么要使用函数式编程 函数式编程更多时候是一种编程的思维方式,是种方法论。函数式与命令...
    99+
    2022-11-12
  • python中的lambda表达式用法详解
    本文实例讲述了python中的lambda表达式用法。分享给大家供大家参考,具体如下: 这里来为大家介绍一下lambda函数。 lambda 函数是一种快速定义单行的最小函数,是从 Lisp 借用来的,可以...
    99+
    2022-06-04
    表达式 详解 python
  • 如何理解Java中的lambda表达式
    这篇文章主要介绍了如何理解Java中的lambda表达式的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何理解Java中的lambda表达式文章都会有所收获,下面我们一起来看看吧。Lambda概述Lambda表...
    99+
    2023-06-30
  • Java中Lambda表达式的使用详细教程
    目录简介格式实例函数式接口lambda作为参数遍历集合创建线程排序简介 说明 本文用示例展示Lambda表达式的用法。同时也会介绍Lambda的相关知识。 Lambda表达式介绍 L...
    99+
    2022-11-13
  • 关于Java 中的 Lambda 表达式
    这篇文章我们将讨论关于Java 中的 Lambda 表达式,Lambda 表达式是 Java 涉足函数式编程的过程。它接受参数并将其应用于表达式或代码块。以下是语法的基本示例: ...
    99+
    2022-11-12
  • 关于java中的Lambda表达式的详细介绍
    什么是lambda表达式?lambda表达式是一个可传递的代码块,可以在后面执行一次或多次。推荐java相关视频教程:java学习视频例如:class action implements ActionListener{ @Override...
    99+
    2016-04-10
    java入门 java lambda表达式
  • Java中的反射,枚举及lambda表达式的使用详解
    目录一、反射1.1定义1.2用途1.3反射基本信息1.4与反射相关的类1.5Class类(反射机制的起源)1.6Class类中的相关方法1.7获得Class对象的三种方式1.8反射的...
    99+
    2022-11-13
  • Java中的Lambda表达式是什么
    这篇文章主要介绍“Java中的Lambda表达式是什么”,在日常操作中,相信很多人在Java中的Lambda表达式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中的Lambda表达式是什么”的疑...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作