【JDK 8-函数式编程】4.6 方法引用与构造函数引用

news2024/11/28 22:23:55

一、 方法引用与构造函数引用

1. 说明

2. 语法:

二、静态方法

三、实例方法

四、构造函数

4.1 单个参数

4.2 2个参数

五、执行结果 


一、 方法引用与构造函数引用

  • 以前调用:对象.方法名类名.方法名

  • jdk1.8提供了另外一种调用方式 ::

1. 说明

  • 用来直接访问类 或者实例已经存在的方法或构造方法

  • 通过方法引用,可以将方法的引用赋值给一个变量

2. 语法:

  • 左边是容器(可以是类名,实例名)

  • 中间是”::"

  • 右边是方法名

package com.learning.javalearning.lambda.chapter4;

import java.util.function.BiFunction;
import java.util.function.Function;

public class Adduce {
    public static void main(String[] args) {


        //使用双冒号:: 来构造静态函数的引用
        // Integer.parseInt("wew);
        Function<String, Integer> fun = Integer::parseInt;
        Integer value = fun.apply("1024");
        System.out.println(value);

        //使用双冒号::来构造非静态函数引用
        String content ="非静态函数引用";
        Function<Integer,String> func = content::substring;
        String result = func.apply( 1);
        System.out.println(result);

        // 2个入参
        BiFunction<String,Integer,User> biFunction = User::new;
        User user1 = biFunction.apply("张无忌",1);
        System.out.println(user1);
        
        // 1个入参
        Function<String,User> function = User::new;
        User user2 = function.apply("赵敏");
        System.out.println(user2);
        
        sayHello(String::toUpperCase,"abvdefg");

    }

    private static  void sayHello(Function<String,String> func,String param){
        String result = func.apply(param);
        System.out.println(result);
    }
}

class User {
    private String name;
    private int age;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public User(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

二、静态方法

  • className::methodName

        //使用双冒号:: 来构造静态函数的引用
        // Integer.parseInt("wew);
        Function<String, Integer> fun = Integer::parseInt;
        Integer value = fun.apply("1024");
        System.out.println(value);


三、实例方法

  • Instance::methodName

        //使用双冒号::来构造非静态函数引用
        String content ="非静态函数引用";
        Function<Integer,String> func = content::substring;
        String result = func.apply( 1);
        System.out.println(result);

四、构造函数

  • 类名::new

4.1 单个参数

        // 1个入参
        Function<String,User> function = User::new;
        User user2 = function.apply("赵敏");
        System.out.println(user2);

4.2 2个参数

        // 2个入参
        BiFunction<String,Integer,User> biFunction = User::new;
        User user1 = biFunction.apply("张无忌",1);
        System.out.println(user1);

 

五、执行结果 

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

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

相关文章

子网的划分

强化计算机网络发现王道没有这一块的内容&#xff0c;导致做题稀里糊涂。于是个人调研补充。 子网划分是将一个大型IP网络划分成更小的子网&#xff0c;以实现更有效的网络管理和资源分配。 原因&#xff1a; 提高网络性能&#xff1a;子网划分可以减少广播域的大小&#xff…

靶场练习——SDcms文件上传漏洞靶场

文章目录 前言一、寻找网站后台页面1、点击请登录&#xff0c;查看URL2、修改URL参数&#xff0c;找到后台登录页面 二、登录后台管理系统1、不能使用爆破2、使用弱口令登录 三、寻找文件上传点四、上传文件操作1、上传普通的图片文件&#xff0c;查看数据包2、尝试上传PHP文件…

Mysql----锁

文章目录 锁 概述 全局锁全局锁 概述全局锁 操作表级锁表级锁 表锁表级锁 元数据锁表级锁 意向锁行级锁行级锁 行锁行级锁 间隙锁&临键锁 锁 概述 是什么 是计算机协调多个进程或线程并发访问某一资源的机制。 意义 在数据库中&#xff0c;数据是一种供许多用户共享的…

C/C++计算分数的浮点数值 2019年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C计算分数的浮点数值 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C计算分数的浮点数值 2019年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 两个整数a和b分别作…

每日一题 337. 打家劫舍 III

难度&#xff1a;中等 整体思路相当于是前两天的方法倒过来&#xff0c;毕竟二叉树最常用的解法就是递归倒推 对于每一颗子树&#xff0c;他必定有一种最大的盗取方法&#xff0c;但是只有它的 root 的盗取情况才会影响到 root 的父节点&#xff0c;即如果收益最大的盗取方法…

【TCP】滑动窗口、流量控制 以及拥塞控制

滑动窗口、流量控制 以及拥塞控制 1. 滑动窗口&#xff08;效率机制&#xff09;2. 流量控制&#xff08;安全机制&#xff09;3. 拥塞控制&#xff08;安全机制&#xff09; 1. 滑动窗口&#xff08;效率机制&#xff09; TCP 使用 确认应答 策略&#xff0c;对每一个发送的数…

机器学习第七课--情感分析系统

分词 分词是最基本的第一步。无论对于英文文本&#xff0c;还是中文文本都离不开分词。英文的分词相对比较简单&#xff0c;因为一般的英文写法里通过空格来隔开不同单词的。但对于中文&#xff0c;我们不得不采用一些算法去做分词。 常用的分词工具 # encodingutf-8 import …

Linux C 多线程

为什么会有线程? ————————>>>> 进程实现多任务的缺点&#xff1a; 进程间切换的计算机资源开销很大&#xff0c;切换效率非常低进程间数据共享的开销也很大 线程和进程的关系 线程是进程的一个执行单元&#xff0c;是进程内的调度实体。比进程…

应用:使用#todo标签,清理未完成笔记 | Obsidian实践

各位【见睿思齐】的朋友&#xff0c;好久不见。断更了这么久&#xff0c;非常抱歉。起初是因为家里出了些事情&#xff0c;不得不断更了一段时间&#xff1b;后来是因为断更太久&#xff0c;找不回写作的感觉&#xff0c;于是又断更了更久的时间……总之是太不应该。最近读了一…

ESLint+Prettier+VSCode编程规范

编程规范 ESLintPrettierESLint和Prettier配合解决代码格式化问题1. 在VSCode搜索Prettier插件安装2. 创建prettier配置文件3. 在VSCode中设置3.1 找到左下角设置图标&#xff0c;点击设置3.2 但是对VSCode 而言&#xff0c;默认一个 tab 等于 4 个空格&#xff0c;而 ESLint 希…

【Hierarchical Coverage Path Planning in Complex 3D Environments】

Hierarchical Coverage Path Planning in Complex 3D Environments 复杂三维环境下的分层覆盖路径规划 视点采样全局TSP 算法分两层&#xff0c;一层高级一层低级&#xff1a; 高层算法将环境分离多个子空间&#xff0c;如果给定体积中有大量的结构&#xff0c;则空间会进一步细…

基于PyTorch搭建FasterRCNN实现目标检测

基于PyTorch搭建FasterRCNN实现目标检测 1. 图像分类 vs. 目标检测 图像分类是一个我们为输入图像分配类标签的问题。例如&#xff0c;给定猫的输入图像&#xff0c;图像分类算法的输出是标签“猫”。 在目标检测中&#xff0c;我们不仅对输入图像中存在的对象感兴趣。我们还…

软件工程之总体设计

总体设计是软件工程中的一个重要阶段&#xff0c;它关注整个系统的结构和组织&#xff0c;旨在将系统需求转化为可执行的软件解决方案。总体设计决定了系统的架构、模块划分、功能组织以及数据流和控制流等关键方面。 可行性研究 具体方面&#xff1a;经济可行性、技术可行性…

如何正确安装滚珠螺杆螺母?

在安装滚珠螺母时&#xff0c;相信很多人都遇到过装反这个问题&#xff0c;滚珠螺杆螺母是通过高精度的加工和配合实现传递转矩和运动的&#xff0c;如果将滚珠螺杆螺母反过来装&#xff0c;会导致导向槽和调整垫片位置不正确&#xff0c;使得整个螺杆系统的传动精度降低&#…

sketch for Mac快捷键大全

你可以在sketch中使用键盘快捷键来加快你的设计过程。要使用键盘快捷键&#xff0c;请同时按下下列列表的所有键。有些命令只能根据你在做什么或者你选择了什么才启用&#xff0c;所有把命令分成了下列不同的部分。 sketch下载地址&#xff1a;sketch 破解-Sketch for mac(专业…

Linux 信号集 及其 部分函数

这几个函数都是对自己自定义的信号集操作 int sigemptyset(sigset_t *set) 功能&#xff1a;清空信号集中的数据&#xff0c;将所有的标志位置为0 参数&#xff1a;set需要操作的信号集 返回值&#xff1a;成功0失败-1 int sigfillset(sigset_t *set) 功能&#xff1a;清空…

各个浏览器离线安装包获取方式

前言 我们一般去浏览器官网下载所谓的官方版浏览器&#xff0c;但是如今呢&#xff0c;下载的都是在线安装包&#xff0c;大小大约1~2MB&#xff0c;安装时电脑必须联网&#xff0c;每次都要从网络上下载。就像下面这样的&#xff1a; 在线安装包的运行必须有网络环境&#…

批量使用cdo 修改分辨率的方法

文件夹里有很多这种grib文件 怎么有2.3T啊&#xff0c;好大&#xff0c;一个一个改太浪费时间了 现在我想用cdo 批量他们的分辨率都降低一些&#xff0c;怎么做呢&#xff1f; find . -name *low.grib |xargs -I{} cdo remapbil,r144x72 {} {}_low.nc 思路:使用 find 命令找到…

小型网络实验组网

路漫漫其修远兮&#xff0c;吾将上下而求索 时隔多日&#xff0c;没有更新&#xff0c;今日一写&#xff0c;倍感教育的乐趣。如果让我每天发无意义的文章&#xff0c;我宁可不发。 实验拓扑 实验要求 &#xff08;1&#xff09;内网主机采用DHCP分配IP地址 &#xff08;2&…

6-3 pytorch使用GPU训练模型

深度学习的训练过程常常非常耗时&#xff0c;一个模型训练几个小时是家常便饭&#xff0c;训练几天也是常有的事情&#xff0c;有时候甚至要训练几十天。 训练过程的耗时主要来自于两个部分&#xff0c;一部分来自数据准备&#xff0c;另一部分来自参数迭代。 当数据准备过程还…