详细分析@FunctionalInterface的基本知识(附Demo)

目录

  • 前言
  • 1. 基本知识
  • 2. Demo

前言

Java的基本知识推荐阅读:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. Spring框架从入门到学精(全)

1. 基本知识

@FunctionalInterface 是 Java 8 引入的一个注解,用于标记一个接口为函数式接口

函数式接口是只包含一个抽象方法的接口,可以有多个默认方法或静态方法,通常用于 lambda 表达式和方法引用

  • 标记接口为函数式接口,明确接口的设计意图,使代码更易读,便于他人理解接口的用途
  • 编译器会确保被标记的接口只有一个抽象方法。如果接口有多于一个抽象方法,编译器会报错,从而避免接口被错误地使用

2. Demo

基本的使用法则如下:

定义函数式接口以及使用lambda

@FunctionalInterface
interface MyFunctionalInterface {
    void myMethod();
}


public class FunctionalInterfaceDemo {
    public static void main(String[] args) {
        MyFunctionalInterface func = () -> System.out.println("Hello, Functional Interface!");
        func.myMethod();
    }
}

多个默认方法和静态方法

@FunctionalInterface
interface MyFunctionalInterface {
    void myMethod();
    
    // 默认方法
    default void defaultMethod() {
        System.out.println("This is a default method.");
    }
    
    // 静态方法
    static void staticMethod() {
        System.out.println("This is a static method.");
    }
}


public class FunctionalInterfaceDemo {
    public static void main(String[] args) {
        MyFunctionalInterface func = () -> System.out.println("Hello, Functional Interface!");
        func.myMethod();
        func.defaultMethod();
        MyFunctionalInterface.staticMethod();
    }
}

为了进一步说明此注解的主要性:(编译检查)

加上注解:

在这里插入图片描述

给一个实际的Demo例子如下:

// 定义函数式接口
@FunctionalInterface
interface CorrectFunctionalInterface {
    void singleMethod();
    
    // 可以有默认方法
    default void defaultMethod() {
        System.out.println("This is a default method.");
    }
    
    // 可以有静态方法
    static void staticMethod() {
        System.out.println("This is a static method.");
    }
}


// 具体使用
public class FunctionalInterfaceDemo {
    public static void main(String[] args) {
        // 使用 lambda 表达式实现 singleMethod
        CorrectFunctionalInterface func = () -> System.out.println("Hello from singleMethod!");
        
        // 调用 singleMethod
        func.singleMethod();
        
        // 调用默认方法
        func.defaultMethod();
        
        // 调用静态方法
        CorrectFunctionalInterface.staticMethod();
    }
}

截图如下:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

apache:the requested operation has failed使用httpd -t

Apache24\bin cmd 回车 httpd -t 因为我重新压缩了,记住,重新压缩要使用原路径, 因为你安装的 时候使用的是原路径 还是不行就改个端口,切记修改配置文件httpd.conf先把Tomcat停了 Define SRVROOT "F:\Apache\Apache24&q…

从生物学到机械:人眼如何为机器人视觉系统提供无尽灵感?

人眼激发了相机机制的发展,该机制改善了机器人对周围世界的观察和反应方式。 该摄像头系统由马里兰大学(UMD)计算机科学家领导的团队开发,模仿人眼用于保持清晰稳定的视力的不自主运动。 该团队对相机的原型设计和测试称为…

警惕!焦虑过度的这些症状正在悄悄侵蚀你的生活!

在快节奏的现代社会中,焦虑已成为许多人生活的一部分。适度的焦虑可以激发我们的斗志,推动我们前进。然而,当焦虑过度时,它可能会变成一把双刃剑,对我们的身心健康造成严重威胁。本文将探讨焦虑过度的表现,…

机器视觉/自然语言/生成式人工智能综合应用实验平台-实训平台-教学平台

AIGC是人工智能1.0时代进入2.0时代的重要标志,MIT 科技评论也将Al合成数据列为2022年十大突破性技术之一,甚至将生成性Al(Generative Al) 称为是AI领域过去十年最具前景的进展。同时,AIGC领域岗位需求数量暴涨。高校方面在人工智能专业与机器…

文献笔记|综述|When Large Language Model Meets Optimization

When Large Language Model Meets Optimization 题目:当大型语言模型遇到优化时 作者:Sen Huang , Kaixiang Yang , Sheng Qi and Rui Wang 来源:arXiv 单位:华南理工大学 文章目录 When Large Language Model Meets Optimization…

【android 9】【input】【10.发送按键事件4——View的分发流程】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录…

AGE 可比性、相等性、可排序性和等效性

AGE已经对原始类型(布尔值、字符串、整数和浮点数)和映射的相等性有了良好的语义。此外,Cypher对整数、浮点数和字符串的可比性和可排序性也有很好的语义。然而,处理不同类型的值与Postgres定义的逻辑和openCypher规范存在偏差&am…

websockt初始化,创建一个webSocket示例

写文思路: 以下主要从几个方面着手写websocket相关,包括以下:什么是webSocket,webSocket的优点和劣势,webSocket工作原理,webSocket握手示例,如何使用webSocket(使用webSocket的一个示例)&#…

【安全设备】堡垒机

一、什么是堡垒机 安全运维审计与风险控制系统即堡垒机,前身为跳板机,跳板机是一个简单的管理设备,但缺乏对运维操作的控制和审计能力。堡垒机是一种特定的网络安全设备,用于在一个网络环境中保护数据和网络不受外部和内部用户的…

k8s record 20240708

一、PaaS 云平台 web界面 资源利用查看 Rancher 5台 CPU 4核 Mem 4g 100g的机器 映射的目录是指docker重启后,数据还在 Rancher可以创建集群也可以托管已有集群 先docker 部署 Rancher,然后通过 Rancher 部署 k8s 想使用 kubectl 还要yum install 安…

深度分析:智算中心建设 - GPU选型

大模型加持AI技术赛道革新发展,“大模型热”愈演愈烈。2024年2月15日,OpenAI首个视频生成模型Sora发布,完美继承DALLE 3的画质和遵循指令能力,能生成长达1分钟全尺寸的高清视频。2024年5月14日,OpenAI发布GPT-4o&#…

comsol达西定律的小例子

comsol达西定律的小例子

clean code-代码整洁之道 阅读笔记(第十七章 终章)

大纲 第十七章 味道与启发 17.1 注释 C1:不恰当的信息 C2:废弃的注释 C3:冗余注释 C4:糟糕的注释 C5:注释掉的代码 17.2 环境 E1:需要多步才能实现的构建 E2:需要多步才能做到的测试 …

computed传参

目录 一、问题 二、解决方法 三、总结 tiips:如嫌繁琐,直接移步总结即可! 一、问题 computed可以依据其他变量动态计算出值,但是v-for渲染html时,需要根据html中 传入的不同变量,来分别做处理或者利用 html中的值该…

node+vue的仿网易云音乐网站-计算机毕业设计源码02905

摘要 本论文基于Node.js和Vue.js技术,以仿网易云音乐网站为目标,设计并实现了一个具有音乐播放、歌曲搜索、歌单推荐等功能的音乐网站。首先,论文介绍了网易云音乐网站的特点和功能,分析了其前端和后端技术栈,为后续设…

CTFShow的36D杯

神光 还是想了一下,但那个异或搞不出来,都是对dword_41A038操作,想起开头就给了 key ,还有反调试应该是要调试的 输出的应该就是 flag ,只是为什么是乱码呢? 放 od 再试试,直接就出 flag 了&am…

Docker搭建kafka+zookeeper以及Springboot集成kafka快速入门

参考文章 【Docker安装部署KafkaZookeeper详细教程】_linux arm docker安装kafka-CSDN博客 Docker搭建kafkazookeeper 打开我们的docker的镜像源配置 vim /etc/docker/daemon.json 配置 { "registry-mirrors": ["https://widlhm9p.mirror.aliyuncs.com"…

iPhone数据恢复篇:iPhone 数据恢复软件有哪些

问题:iPhone 15 最好的免费恢复软件是什么?我一直在寻找一个恢复程序来恢复从iPhone中意外删除的照片,联系人和消息,但是我有很多选择。 谷歌一下,你会发现许多付费或免费的iPhone数据恢复工具,声称它们可…

[C++]——同步异步日志系统(3)

同步异步日志系统 一、日志系统框架设计1.1模块划分1.1.1 日志等级模块1.1.2 日志消息模块1.1.3 日志消息格式化模块1.1.4 日志落地模块(日志落地的方向是工厂模式)1.1.5 日志器模块(日志器的生成是建造者模式)1.1.6 异步线程模块…

【HBZ分享】TCP连接完成后又是如何保证数据的可靠性传输

前提 发送发发送数据时,需要给出一个seq编号。第一个数据包的seq编号是一个随机数, 从第二个开始,seq编号就是【第一次的seq数据包大小】, 即接收方响应过来的期待数据包编号 ACK机制 接收方收到数据后,要给发送方回…