Java—JDK8新特性—函数式接口

news2024/11/24 12:38:48

目录

函数式接口

3.1 什么是函数式接口

3.2 @functionalinterface注解 源码分析

3.3 Lambda表达式和函数式接口关系

3.4 使用函数式接口


函数式接口

3.1 什么是函数式接口

        如果一个接口中只包含一个抽象方法,这个接口称为函数式接口

如果一个接口包含,一个抽象方法、一个默认方法、一个静态方法,这个接口也是函数式接口

3.2 @functionalinterface注解 源码分析

        一个标记性注解

 

        在定义接口是函数式接口时,可以使用 @functionalinterface 注解进行标注,该注解会在编译器对这个接口进行检查

        如果使用@functionalinterface 注解来定义接口,编译器将会强制检查该接口,是否只有一个抽象方法,否则会报错。

3.3 Lambda表达式和函数式接口关系

        Lambda表达式就是一个函数式接口的实例

        如果一个对象是函数式接口的实例,那么该对象就可以用Lambda表达式,用匿名实现类表示的地方都可以用Lambda表达式替换

3.4 使用函数式接口

        可以使用JDK中内置的函数式接口,也可以自定义函数式接口

案例1:

先定义一个函数式接口

@FunctionalInterface
public interface MyFun<T> {
    T getValue(T t);
}

写一个实现类,FunctionInterfaceDemo1,进行对给定字符串转为大写

/**
 * 函数式接口使用
 */
public class FunctionInterfaceDemo1 {
    public static void main(String[] args) {
        //需求: 使用函数式接口,将给定的字符转为大写

        //1.使用原始方法
        System.out.println(toUpperCase("hello"));

        //2.使用函数式接口
        String result1 = toLowerCase(new MyFun<String>() {
            @Override
            public String getValue(String s) {
                return s.toUpperCase();
            }
        }, "hello");

        System.out.println("result1:" + result1);

        String result2 = toLowerCase( s -> s.toUpperCase(), "hello");
        System.out.println("result2:" + result2);

    }
    // 定义一个方法,将给定的字符串转为大写
    public static String toUpperCase(String str) {
        return str.toUpperCase();
    }

    /**
     * 将给定的字符串转为大写
     * @param function 函数式接口
     * @param str 给定字符串
     * @return
     */
    public static String toLowerCase(MyFun<String> function, String str) {
        return function.getValue(str);
    }
}

运行结果:

 

未完,待更新

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

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

相关文章

mac php8 安装xdebug模块失败

安装 xdebug 模块,官网有详细介绍Xdebug: Documentation Installation 本机是mac php使用brew安装,想着可以直接使用以下方式安装,还是美滋滋的 但是安装途中发生了错误 PHP Warning: mkdir(): File exists in /usr/local/Cellar/php/8.0.10/share/php/pear/System.php on…

解决报错ERROR: No matching distribution found for torchvision==0.11.2+cu111

目录 一、猜测 二、验证 三、解决方案 四、检验 该报错是在按官网方法用指令&#xff1a; pip install torch1.9.1cu111 torchvision0.10.1cu111 torchaudio0.9.1 -f https://download.pytorch.org/whl/torch_stable.html 安装pytorch时出现的&#xff0c;以下是分析&#…

粗糙集属性约简方法与Python实现【1】

1. 方法概述 1.1 定义 粗糙集是波兰理工大学Z.pawlak教授提出用来研究不完整数据,不精确知识的表达、学习,归纳等的一套理论。它是一种新的处理模糊和不确定性问题的数学工具,已被广泛应用于知识发现、机器学习、决策支持、模式识别、专家系统及归纳推理等领域。 粗糙集理…

开源相亲小程序

此项目目前已完成前台开发。源码结构清晰&#xff0c;完美实现模块化组件化思想&#xff0c;易维护。 曾经&#xff0c;作者也为寻求自己的另一半苦恼&#xff0c;因为平时工作繁忙&#xff0c;交际圈窄小&#xff0c;而父母又各种催婚&#xff0c;无奈上了“XX网”去碰碰运气。…

webpack5搭建react框架-antd组件库使用

antd组件库使用 一、前言 前面已经完成了webpack5 react框架的配置搭建&#xff0c;我们在进行项目开发的时候大多还会使用第三方的组件库&#xff0c;而antd组件库在react项目中使用是非常非常多的&#xff0c;所以就将react框架使用最多的antd组件库引入并使用。 二、ant…

京东给了兄弟姐妹们稳稳的幸福

“今天我看了宿舍楼&#xff0c;我真的是气得想打人&#xff1b;我原来一直说的是高级单身公寓&#xff01;可实际情况呢&#xff1f;我说了多少遍了&#xff0c;要让员工、让兄弟们活的有尊严。而我们宿迁分公司的管理层是怎么做的呢&#xff0c;说难听的就是没有把员工当人去…

低代码平台的多租户SAAS系统实战解决方案—JeecgBoot

JeecgBoot免费低代码平台&#xff0c;提供一键切换多租户模式机制&#xff01;快速实现全系统的saas租户方案&#xff0c;通过租户ID进行数据隔离。 租户设计思路 1、开启全系统租户隔离 开启方法 将 org.jeecg.config.mybatis.MybatisPlusSaasConfig#OPEN_SYSTEM_TENANT_CO…

RabbitMQ --- 消息可靠性

消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 一、消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送时丢失&#xff1a; …

(java)继承和多态 (详解)

目录 1 继承 1.1为什么需要继承 1.2 继承概念 1.3 继承的语法 1.4 父类成员访问 1.4.1 子类中访问父类的成员变量 1.4.2 子类中访问父类的成员方法 1.5 super关键字 1.6 子类构造方法 1.7 super和this 1.7.1 this 1.7.2 super和this 1.8 再谈初始化 1.9 继承方…

软考信管高级——人力资源管理

人力资源管理内容 人力资源管理计划 内容&#xff1a; 角色与职责&#xff1a;定义项目所需的岗位、技能和能力项目组织图&#xff0c;说明项目所需的人员数量人员配备管理计划&#xff0c;说明需要每个团队的时间段以及有助于项目团队参与的其他重要信息 成功的项目团队的特…

Linux安装java jdk

1、检查系统中jdk 版本&#xff1a;java -version 2、检测 jdk 安装包&#xff1a;rpm -qa | grep java 3、卸载 openjdk rpm -e --nodeps tzdata-java-2017b-1.el7.noarch rpm -e --nodeps java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 rpm -e --nodeps java-1.8.0-open…

深度学习细节总结

计算机视觉 目标检测&#xff0c;语义分割&#xff0c;目标分类 自然语言处理NLP 数据结构 数据结构 访问元素 线性回归 可以看成是一个单层的神经网络&#xff0c;有显式的解 优化算法 梯度下降&#xff0c;超参数&#xff1a;学习率、批量大小 分类回归 单层感知机…

RuntimeError:cuDNN error:CUDNN_STATUS_EXECUTION_FAILED

背景 最近在服务器上跑Deeplabv3进行语义分割时&#xff0c;需要使用GPU版的pytorch。 我在Anaconda下配置了适配服务器CUDA的pytorch&#xff0c;但是报错如下&#xff0c;&#xff08;下图无限接近于我的错误&#xff0c;但是我忘记截图我的报错了&#xff0c;所以用了下面这…

魔百盒CM211-1S_ZG_增强版2+16_当贝纯净版桌面-卡刷固件包

魔百盒CM211-1S_ZG_增强版216_当贝纯净版桌面-卡刷固件包-内有教程-华为鸿蒙动画 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的…

图灵java学习

反汇编 最后一行 效果是 程序计数器&#xff0c;保存下一个指令的地址 iadd. int加法 动态链接 Java动态链接&#xff08;Dynamic Linking&#xff09;是Java中的一种运行时特性&#xff0c;它允许在应用程序运行时动态地链接和加载库和组件。在编译时&#xff0c;Java程序不需…

逆向效率提升工具与方法汇总(持续更新...)

欢迎大家提供高效方法与工具 工具油猴插件SwitchyOmegaReresFiddler插件编程猫 奇淫技巧seleniumOptions常用参数防检测将浏览器navigator.webdriver重置为Falsestealth.min.js解决常见的指纹检测浏览器worker完美解决检测 小试牛刀chrome开发者工具设置中文调试代码如何友好格…

【MySQL】(创建,查看,使用,删除)数据库

目录 一.Cmd命令执行操作 1.使用cmd命令进入数据库&#xff08;mysql -uroot -p) 2.查看数据库 3.创建数据库 4.使用数据库 5.删除数据库 二.数据库软件执行操作 1.查看数据库 2.创建数据库 3.数据库 4.删除数据库 一.Cmd命令执行操作 1.使用cmd命令进入数据库&#…

详解PostMan使用

目录 1.简介 2.管理用例集 3.断言 3.1.概述 3.2.判断响应状态码 3.3.判断响应体是否包含某个字符串 3.4.断言JSON数据 3.5.断言响应头 4.全局变量和环境变量 4.1.概述 4.2.创建环境 4.3.设置变量 4.4.获取变量 5.前置脚本 6.关联 7.批量执行 8.测试报告 1.简介…

传统机器学习(六)集成算法(2)—Adaboost算法原理

传统机器学习(六)集成算法(2)—Adaboost算法原理 1 算法概述 Adaboost(Adaptive Boosting)是一种自适应增强算法&#xff0c;它集成多个弱决策器进行决策。 Adaboost解决二分类问题&#xff0c;且二分类的标签为{-1,1}。注&#xff1a;一定是{-1,1}&#xff0c;不能是{0,1} …

Linux 线程安全

目录 传统艺能&#x1f60e;Linux线程安全&#x1f60a;原子性&互斥&#x1f923;mutex&#x1f60a;互斥量初始化&#x1f64c;互斥量销毁&#x1f64c;互斥量加锁&#x1f64c;互斥量解锁&#x1f64c; 互斥量原理&#x1f60a;锁的申请&#x1f64c; 线程安全&#x1f9…