【JDK8新特性之方法引用-案例实操】

news2024/11/18 7:40:10

一.JDK8新特性之方法引用-案例实操

之前我们学习了Stream流以及Lambda表达式相关的内容,如果想看的同学可以看一下之前的文章,接下来我们就来学习让Lambda表达式更加简洁的方法引用

在这里插入图片描述

二. 什么是方法引用?为什么要使用方法引用?

2.1 lambda表达式冗余

  • 案例描述:求解数组中元素的和
  • 存在的问题:lambda表达式中逻辑过于复杂
  • 改进方法:通过方法引用降低冗余,提升效率
import java.util.function.Consumer;

/**
 * 案例描述:求解数组中元素的和
 * 存在的问题:lambda表达式中逻辑过于复杂
 * 改进方法:通过方法引用降低冗余,提升效率
 */
public class Demo{

    public static void main(String[] args) {
        sum(a->{
            int sum = 0;
            for (int i : a) {
                sum += i;
            }
            System.out.println("数组之和:" + sum);
        });
    }
    
    public static void sum(Consumer<int[]> consumer){
        int[] a= {1,1,1,1,1,1};
        consumer.accept(a);
    }
}

结果展示:
在这里插入图片描述

2.2 方法引用解决

符号表示:::

符号说明:双冒号为方法引用运算符,而它所在的表达式被称为方法引用

:: 方法引用解决

import java.util.function.Consumer;

/**
 * 案例描述:求解数组中元素的和
 * 存在的问题:lambda表达式中逻辑过于复杂
 * 改进方法:通过方法引用降低冗余,提升效率
 */
public class Demo{

    public static void main(String[] args) {
        sum(FunctionRefTest01::method);
    }

    public static int method(int[] arr){
        int sum = 0;
        for (int i : arr) {
            sum += i;
        }
        System.out.println("数组之和:" + sum);
        return sum;
    }

    public static void sum(Consumer<int[]> consumer){
        int[] a= {1,1,1,1,1,1};
        consumer.accept(a);
    }
}

结果展示:
在这里插入图片描述

三.方法引用基本方式

方法引用在JDK8中使用是相当灵活的,有以下几种形式:

  1. instanceName::methodName->对象::方法名

  2. ClassName::staticMethodName-> 类名::静态方法

  3. ClassName::methodName->类名::普通方法

  4. ClassName::new->类名::new 调用的构造器

  5. 数组类型[]::new->String[]::new 调用数组的构造器

四.总结

方法引用是为了简化lambda中存在太多冗余或者重复的代码,更加简洁,方便使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/371821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode Solutions - Part 1

回溯: 字符串的排列 回溯&#xff1a;78. 子集 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的子集&#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1&#xff1a; 输入&#xff1a;nums …

【Java】让我们对多态有深入的了解(九)

目录 &#xff08;1&#xff09;接口的基本介绍​编辑 &#xff08;2&#xff09;接口的注意事项和细节 1.接口不能被实例化 2.接口中所有方法是public方法&#xff0c;接口中的抽象方法&#xff0c;可以不用abstract修饰 3.一个普通类实现接口&#xff0c;必须将接口所有…

ARMv8 architecture里的Memory aborts

在AArch64 Virtual Memory System Architecture中&#xff0c;有以下几种机制会导致PE在访问memory失败时产生exceptions。 Debug exception: An exception caused by the debug configuration.Alignment fault: An Alignment fault is generated if the address used for a m…

【YSYY】DSPE-PEG-cRGD,磷脂-聚乙二醇-靶向穿膜肽,靶向功能材料

靶向穿膜肽RGD环肽&#xff0c;磷脂-聚乙二醇-cRGD中的cRGD是五元环肽。 DSPE&#xff08;1,2-二硬脂酰-sn-甘油-3-磷酸乙醇胺&#xff09;是一种饱和的18碳磷脂&#xff0c;常用于脂质体的合成。聚乙二醇&#xff08;PEG&#xff09;偶联DSPE具有亲水性。聚乙二醇能增强溶解性…

一文2000字手把手教你自动化测试Selenium+pytest+数据驱动

主流自动化框架 selenium &#xff1a;web端自动化框架 &#xff0c;&#xff08;行业里面最核心的框架&#xff09; appium &#xff1a;手机app端框架 requests &#xff1a;接口测试 selenium 工具类封装 selenium提供了很多方法供我们去完成网页元素的操作&#xff0c; …

1.创建Springboot项目

一&#xff1a;进入https://start.spring.io/&#xff0c;如下是相关步骤&#xff1a;地址https://start.spring.io/maven 方式springboot版本项目名称jar方式点击创建二&#xff1a;点击&#xff08;generate&#xff09;生产自动下载1.IDEA 直接打开2.启动成功SpringdiApplic…

【计算机网络】TCP底层设计交互原理

文章目录1.TCP底层三次握手详细流程2.TCP洪水攻击介绍和ss命令浅析3.Linux服务器TCP洪水攻击入侵案例4.TCP洪水攻击结果分析和解决方案5.TCP底层四次挥手详细流程1.TCP底层三次握手详细流程 TCP的可靠性传输机制&#xff1a;TCP三次我手的流程 一次握手&#xff1a;客户端发送一…

Java中抽象类有什么用

抽象类是用来捕捉子类的通用特性的&#xff0c;是被用来创建继承层级里子类的模板。现实中有些父类中的方法确实没有必要写&#xff0c;因为各个子类中的这个方法肯定会有不同&#xff1b;而写成抽象类&#xff0c;这样看代码时&#xff0c;就知道这是抽象方法&#xff0c;而知…

39-Golang中的接口

Golang中的接口基本介绍基本语法注意事项和细节案例实现对Hero结构体切片的排序&#xff1a;sort.Sort(data Interface)实现接口和继承之间的比较区别基本介绍 interface类型可以定义一组方法&#xff0c;但是这些不需要实现。并且interface不能包含任何变量。到某个自定义类型…

【编程入门】应用市场(NodeJS版)

背景 前面已输出多个系列&#xff1a; 《十余种编程语言做个计算器》 《十余种编程语言写2048小游戏》 《17种编程语言10种排序算法》 《十余种编程语言写博客系统》 《十余种编程语言写云笔记》 《N种编程语言做个记事本》 目标 为编程初学者打造入门学习项目&#xff0c;使…

JUC-Synchronized相关内容

设计同步器的意义多线程编程中&#xff0c;有可能会出现多个线程同时访问同一个共享、可变资源的情况&#xff0c;这个资源我们称之其为临界资源&#xff1b;这种资源可能是&#xff1a;对象、变量、文件等。共享&#xff1a;资源可以由多个线程同时访问可变&#xff1a;资源可…

25 openEuler管理网络-使用nmcli命令配置ip

文章目录25 openEuler管理网络-使用nmcli命令配置ip25.1 nmcli介绍25.2 设备管理25.2.1 连接到设备25.2.2 断开设备连接25.3 设置网络连接25.3.1 配置动态IP连接25.3.1.1 配置IP25.3.1.2 激活连接并检查状态25.3.2 配置静态IP连接25.3.2.1 配置IP25.3.2.2 激活连接并检查状态25…

Mr. Cappuccino的第44杯咖啡——Kubernetes之Service

Kubernetes之ServiceService的概念Service的类型Service演示案例环境准备ClusterIP&#xff08;集群内部访问&#xff09;IptablesIPVSEndpointNodePort&#xff08;对外暴露应用&#xff09;LoadBalancer&#xff08;对外暴露应用&#xff0c;适用于公有云&#xff09;Ingress…

3.抽象工厂模式

与工厂模式对比 工厂模式 工厂模式是类创建模式。在工厂模式中&#xff0c;只需要生产同一种产品&#xff0c;只不过是生产厂家不同。 所以产品类的设计&#xff1a; 抽象的产品类Product具体的产品类Product_A&#xff0c;Product_B, Product_C, Product_D…… 工厂的设计…

详解Android 13种 Drawable的使用方法

前言关于自定义View&#xff0c;相信大家都已经很熟悉了。今天&#xff0c;我想分享一下关于自定义View中的一部分&#xff0c;就是自定义Drawable。Drawable 是可绘制对象的一个抽象类&#xff0c;相对比View来说&#xff0c;它更加的纯粹&#xff0c;只用来处理绘制的相关工作…

用Python+ChatGPT批量生成论文概述

用PythonChatGPT批量生成论文概述 做算法研究离不开阅读大量论文。从海量论文中找到需要的论文往往耗费算法团队不少的精力。 ChatGPT官方例子中有一个“TL;DR”摘要生成&#xff0c;非常适合生成论文摘要。 于是我用pythonGPT-3 API开发了一个工具&#xff0c;可以直接从arx…

基于Android校园失物招领的设计与实现

需求信息&#xff1a; 客户端&#xff1a; 1&#xff1a;登录注册&#xff1a;用户可以通过自己的信息进行账号的注册 2&#xff1a;查看信息&#xff1a;用户可以查看失物和拾物信息&#xff0c;以及对信息进行点赞和评论 3&#xff1a;发布拾物信息&#xff1a;用户可以发布自…

连阿迪达斯都卖不动了!是国潮太卷,还是消费者对品牌祛魅了?

据权威报告&#xff0c;2022年&#xff0c;阿迪达斯业绩不佳&#xff0c;尤其是大中华区表现疲软。就在昨晚&#xff0c;阿迪在业绩指引中称“2023年营运亏损可能高达7亿欧元”&#xff0c;其美国存凭证&#xff08;ADR&#xff09;价格暴跌近9%。值得注意的是&#xff0c;这已…

2分钟告诉你怎么成为一名黑客?零基础入门

在很久很久以前&#xff08;别问我有多久&#xff0c;不要在意这些细节&#xff09;&#xff0c;“ 黑客”指的是 喜爱钻研技术、精通计算机技术的程序员。后来有些黑客写了些能破坏程序或者系统正常运行的代码&#xff0c;又用搞了些破坏&#xff0c;于是这些黑客有了新的称呼…

APP优化 —— MMAP内存映射

mmap 一种内存映射文件的方法 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上&#xff0c;如果文件的大小不是所有页的大小之和&#xff0c;最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。 头文件 <sys/mman.h> 函数原型 v…