首页 > 其他分享 >注解:@FunctionalInterface函数式接口

注解:@FunctionalInterface函数式接口

时间:2024-12-14 18:27:09浏览次数:11  
标签:MyFunctionalInterface 函数 接口 FunctionalInterface input 注解 Lambda

@FunctionalInterface 是 Java 8 引入的一个标记型注解,用于声明一个接口是函数式接口(Functional Interface)。函数式接口是指只有一个抽象方法的接口,这样的接口可以被用作 Lambda 表达式的类型。使用 @FunctionalInterface 注解有助于确保接口符合函数式接口的定义,并且在编译时如果接口包含多于一个抽象方法,编译器会报错。

以下是 @FunctionalInterface 注解的一些使用场景和要点:

基本用法

@FunctionalInterface
public interface MyFunctionalInterface {
    void doSomething(String input);
}

在这个例子中,MyFunctionalInterface 被声明为一个函数式接口,它有一个抽象方法 doSomething

使用 Lambda 表达式

由于 MyFunctionalInterface 是函数式接口,你可以使用 Lambda 表达式来实例化它:

MyFunctionalInterface instance = (String input) -> {
    System.out.println("Doing something with: " + input);
};

允许有多个非抽象方法

函数式接口可以有多个非抽象方法(默认方法),除了一个抽象方法之外:

@FunctionalInterface
public interface MyFunctionalInterface {
    void doSomething(String input);

    default void defaultMethod() {
        System.out.println("This is a default method.");
    }
}

与 Lambda 表达式一起使用

你可以在需要函数式接口的地方直接使用 Lambda 表达式:

public void execute(MyFunctionalInterface function) {
    function.doSomething("Hello");
}

// 使用 Lambda 表达式调用 execute 方法
execute((String input) -> System.out.println("Doing something with: " + input));

编译时检查

如果你的函数式接口不小心包含了多个抽象方法,使用 @FunctionalInterface 注解可以在编译时检查出来:

@FunctionalInterface
public interface MyFunctionalInterface {
    void doSomething(String input);
    void doAnotherThing(String input); // 这会导致编译错误
}

上面的代码会因为包含多个抽象方法而编译失败。

与方法引用一起使用

函数式接口也可以与方法引用一起使用:

MyFunctionalInterface instance = System.out::println;

这里,System.out::println 是一个方法引用,它引用了 PrintStream 类的 println 方法,并且这个引用符合 MyFunctionalInterface 接口的签名。

@FunctionalInterface 注解是 Java 8 函数式编程的一个重要组成部分,它使得接口可以更灵活地与 Lambda 表达式和方法引用一起使用,同时也提供了编译时的安全性。

标签:MyFunctionalInterface,函数,接口,FunctionalInterface,input,注解,Lambda
From: https://blog.csdn.net/weixin_73060959/article/details/144446006

相关文章

  • Pytest接口自动化测试框架Python自动化测试开发
    一、引言在软件开发过程中,接口测试是确保软件各个组件之间数据传输和功能交互正常工作的重要环节。通过接口测试,可以提高软件的整体质量和稳定性。Pytest是一个流行的Python自动化测试框架,提供了丰富的断言方法和灵活的测试组织结构,使得编写接口测试用例变得简单而高效。本文将详......
  • 谈谈Python中的接口与抽象基类
    接触Python比较早的朋友可能都有这样的体会,Python语言虽然也支持面向对象的编程方式,但是,不像那些纯面向对象的语言(比如Java和.NET)那样严格和规范。随着项目的规模逐步扩大之后,想要以一种清晰、可维护和可扩展的方式定义和实施对象的行为就变得越来越困难。今天介绍的Python中两......
  • VMware的三种网络模式——在NAT模式下开放接口为局域网内其他主机提供服务
    众所周知VMware有三种常用的网络通讯模式,分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式),它们各有不同的用法。Bridged桥接模式是与主机使用同一网段的IP,能够直接使用主机的网卡,连接互联网与局域网。NAT转换模式是通过网络适配器进行IP转换,能够通过VMnet8......
  • 记录C#开发OCR识别身份证号接口
        很早的时候就萌生过开发OCR识别功能的想法。但当时任务紧急(没有这个技术),就直接调用了阿里云的付费接口。今天使用微信的时候,突然想萌生了直接使用微信OCR的方法识别。说干就干。    第一步肯定是百度。百度发现不得了,有同样想法的人真是不少。1、逆向调用QQ......
  • 【代码设计】Java 用注解简洁明了的标注数据筛选特性
    基础设计默认值:仅包含正常状态数据,例如账户:不包含离职账户的正常账户即为deletedData=false,wantsEnabled=true,wantsDisabled=false场景举例:场景一:正常的只展示正常的账户,则为默认的情况场景二:只搜索不正常的已经删除的账户,则与上一条完全相反,则为wantsEnabled=......
  • 【Python+Flask+OpenAI】利用OpenAI API Key实现GPT4-智能AI对话接口demo - 从0到1手
    文章目录前言环境准备安装必要的库生成OpenAIAPI代码实现详解导入必要的模块创建Flask应用实例配置OpenAIAPI完整代码如下(demo源码)代码解析利用Postman调用接口了解更多AI内容结尾前言Flask作为一个轻量级的PythonWeb框架,凭借其简洁易用的特点,成为构建Web应用......
  • 利用CURL调试云端接口
    curl是一个功能强大的命令行工具,用于发送各种网络请求。以下是一些使用curl创建网络请求的常见用法:curl-XPOSThttp://localhost:6090/version/webHook\-H"Content-Type:application/json"\-d'{"ref":"refs/heads/master","after":"12345678......
  • 开源低代码平台-Microi吾码-接口引擎实战:MongoDB相关操作
    Microi吾码-接口引擎实战:MongoDB相关操作前言往MongoDB系统日志中插入数据新增数据(自定义数据库名、表名)修改数据删除数据查询数据列表查询单条数据Microi吾码-系列文档接口引擎实战-系列文档前言本篇介绍如何在接口引擎、后端V8事件中对MongoDB进行相关操作对Mongo......
  • 基于Fastapi的区分聊天房间的聊天转发功能接口示例
    基于房间码(eCode)和用户uid,区分不同的聊天房间进行消息转发。前端将收到的消息根据房间码(eCode)过滤到不同的聊天记录显示页面后端demo代码如下:fromfastapiimportFastAPI,HTTPException,Body,WebSocketDisconnectfromstarlette.websocketsimportWebSocketactive_conn......
  • rest-assured实现java接口自动化测试
    1.导包导入importio.restassured.response.Response;2.使用2.1请求四要素:请求方式,请求路径,请求参数,请求头given()在什么场景下(请求头,请求参数,cookies等等)when()执行什么操作(get,post)then()判断结果(显示日志,返回接口的结果)2.2获取响应结果then().......