java 8 中的函数式接口如何工作

2023-12-15

这是我在研究函数式接口概念时遇到的一个例子。

interface Sayable{  
   void say();  
}  
public class MethodReference {  
    public static void saySomething(){  
        System.out.println("Hello, this is static method.");  
    }  
    public static void main(String[] args) {  
        // Referring static method  
        Sayable sayable = MethodReference::saySomething;  
        // Calling interface method  
        sayable.say();  
    }  
} 

这是打印“你好,这是静态方法。”在运行时的输出中。我的问题是,当我们调用 say() 方法(未实现)时,它如何打印输出


您可以将方法引用视为这样:

Sayable sayable = new Sayable() {

    @Override
    void say() {
        // Grab the body of the method referenced by the method reference,
        // which is the following:
        System.out.println("Hello, this is static method.");
    }
}

该方法引用有效,因为

  • 目标类型是功能接口 Sayable(您试图将结果存储到Sayable类型);和
  • the signature of the method reference to saySomething() matches the functional interface method say(), that is, the parameters and the return type match1.

实施say()的方法Sayable称为变量的实例sayable等于方法的主体方法参考指。

正如 JB Nizet 在评论中所说,say()实际上is实施的。


1 A little detail: the word 'match' does not exactly mean 'are equal'. E.g. if saySomething() returned an int, it would still work, although the target type's only method defines the return type to be void.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 8 中的函数式接口如何工作 的相关文章

  • HTTP 状态 404 - 请求的资源不可用

    在使用 MyEclipse IDE 中的 Tomcat 服务器和 Struts 2 框架时 我遇到了反复出现的问题 我将我的程序作为服务器应用程序运行 当它运行时 默认的index jsp 文件将成功打开 但应用程序的其他过去都不起作用 当
  • 如何在 Eclipse 中用阿拉伯语读写

    我在 eclipse 中编写了这段代码来获取一些阿拉伯语单词 然后打印它们 public class getString public static void main String args throws Exception PrintS
  • 将链接对象转换为流或集合

    我想迭代堆栈跟踪 堆栈跟踪由可抛出对象组成 其 getCause 返回下一个可抛出对象 最后一次调用 getCause 返回 null 示例 a gt b gt null 我尝试使用 Stream iterable 这会导致 NullPoi
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • 所有junit测试后的清理

    在我的项目中 我必须在所有测试之前进行一些存储库设置 这是使用一些棘手的静态规则来完成的 然而 在所有测试之后我不知道如何进行清理 我不想保留一些神奇的静态数字来引用所有测试方法的数量 我应该一直维护它 最受赞赏的方法是添加一些侦听器 该侦
  • Java:VM 如何在 32 位处理器上处理 64 位“long”

    JVM 如何在 32 位处理器上处理 64 位的原始 long 在多核 32 位机器上可以并行利用多个核心吗 64 位操作在 32 位机器上慢了多少 它可能使用多个核心来运行不同的线程 但不会并行使用它们进行 64 位计算 64 位长基本上
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 打印包含 JBIG2 图像的 PDF

    请推荐一些库 帮助我打印包含 JBIG2 编码图像的 PDF 文件 PDFRenderer PDFBox别帮我 这些库可以打印简单的 PDF 但不能打印包含 JBIG2 图像的 PDF PDFRenderer尝试修复它 根据 PDFRedn
  • 为什么 ConcurrentHashMap::putIfAbsent 比 ConcurrentHashMap::computeIfAbsent 更快?

    使用 ConcurrentHashMap 我发现computeIfAbsent 比putIfAbsent 慢两倍 这是简单的测试 import java util ArrayList import java util List import
  • 从 html 页面和 javascript 调用 java webservice

    我正在尝试从 javascript 调用 java 实现的 Web 服务 使用 NetBeans IDE 我读过很多关于 jQuery 和 AJAX 的内容 但我似乎无法掌握它 假设我的 Web 服务 WSDL 位于 http localh
  • 在 Selenium WebDriver 上如何从 Span 标签获取文本

    在 Selenium Webdriver 上 如何从 span 标记检索文本并打印 我需要提取文本UPS Overnight Free HTML代码如下 div id customSelect 3 class select wrapper
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • 我想要一个 Java 阿拉伯语词干分析器

    我正在寻找阿拉伯语的 Java 词干分析器 我找到了一个名为 AraMorph 的库 但它的输出是无法控制的 并且它会形成不需要的单词 还有其他阿拉伯语词干分析器吗 这是新的阿拉伯语词干分析器 Assem 的阿拉伯语轻词干分析器 http
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • 如何将实例变量传递到 Quartz 作业中?

    我想知道如何在 Quartz 中外部传递实例变量 下面是我想写的伪代码 如何将 externalInstance 传递到此作业中 public class SimpleJob implements Job Override public v
  • Java中获取集合的幂集

    的幂集为 1 2 3 is 2 3 2 3 1 2 1 3 1 2 3 1 假设我有一个Set在爪哇中 Set
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu
  • Java中有类似分支/跳转表的东西吗?

    Java有类似分支表或跳转表的东西吗 分支表或跳转表是 根据维基百科 http en wikipedia org wiki Branch table 用于描述使用分支指令表将程序控制 分支 转移到程序的另一部分 或可能已动态加载的不同程序
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • java 从 List 转换为 List,其中 B 扩展 A

    这可能吗 如果不是 为什么这在 Java 中不可能呢 interface B extends A public List b getList List a getList Type mismatch cannot convert from
  • 将文本定位在图像上,以便即使在调整浏览器大小时它也始终指向图像中的同一位置

    我目前正在使用 weblflow 构建一个网站 但遇到了一个问题 这里有人可能可以帮助我解决 这是我在多个项目中遇到的问题 所以我非常感谢有人的帮助 基本上 如果您有一个全屏尺寸的图像 设置为背景图像 100vw 和 100vh 然后想要将
  • 用with()可以吗?

    有一次 我看到一个这样的例子 var a x y var r 10 with Math a PI r r x r cos PI y r sin PI 2 而且看起来很方便 因为这样我就不用输入所有的内容了Math s 但是当我看一下MDN
  • execvp - ls: fts_open: 没有这样的文件或目录

    我目前正在努力解决这个错误 我正在编写一个 shell 模拟器 使用 fork 来使用 execvp 执行命令 几乎我尝试解析到 shell 的每个命令都运行良好 除了不带参数的 ls 如果我尝试执行 ls lah 一切正常 但简单的 ls
  • 从结构体字段分配变量时“无法移出借用的内容”

    我正在学习 Rust 并且正在与借用检查器作斗争 我有一个基本的Point结构 我有一个scale修改点的所有坐标的函数 我想从另一个名为的方法调用此方法convert struct AngleUnit struct Point x f32
  • 数组的累积和

    所以我正在解决一个问题 重点是获取数组的累积和 例如 如果我有一个 0 2 3 1 1 数组 它将返回 0 2 5 4 3 或者如果你有一个 1 2 3 4 5 6 7 8 9 10 数组 它应该返回 1 3 6 10 15 21 28 3
  • Ctrl-Shift-键发出蜂鸣声但不发送到终端

    My OS X terminal does not seem to recognise Ctrl Shift Instead it beeps when I hit Ctrl Shift and any other key on the k
  • 将 cURL 响应流式传输到发布结果的另一个 cURL 命令

    有一个公共流式 Meetup API 可传输 JSON 事件 http stream meetup com 2 rsvps 在命令行的一行中 我希望能够重定向该流 以便将每个 JSON 对象发布到另一个 API 我已经尝试了很多 cURL
  • 在 Python 中生成唯一哈希的最安全方法

    我需要生成可在文件名中使用的唯一标识符 并且可以在给定相同输入值的情况下重现 我需要生成数百万个这样的标识符 因为源输入有数百万种组合 为了简单起见 我将在示例中使用一个小集合 但实际的集合可能相当大 数百个 也许数千个项目 大于可以手动编
  • 因诺数据库;多个数据目录

    我需要将两个 Innodb 数据库文件存储在不同的分区上 一个数据库位于 raid0 上以提高速度 另一个数据库位于 raid1 上以提高稳定性 根据我的阅读 实现这一目标的唯一方法是使用innodb file per table并将 ib
  • ASP.NET Core 中的属性注入

    我正在尝试将 ASP NET 应用程序移植到 ASP NET Core 我在 UnitOfWork 实现上进行了属性注入 使用 Ninject 如下所示 Inject public IOrderRepository OrderReposit
  • 导入错误:无法导入名称 ExponentialSmoothing

    我尝试在 python 中安装 statsmodels 安装后 我用 pip freeze 检查了 该包可以在列表中看到 当我尝试时 from statsmodels tsa api import ExponentialSmoothing
  • R read.table 将行列条目循环到下一行

    这是我第一次使用 read table 遇到此问题 对于具有大量列的行条目 read table 会将列条目循环到下一行 我有一个 txt 文件 其中的行长度可变且不等 作为参考 这是我正在阅读的 txt 文件 http www broad
  • oauth2 openid 连接 javascript (电子) 桌面应用程序

    桌面应用程序的正确 oauth2 流程是什么 除了桌面应用程序之外 我还有一个使用隐式流程的 SPA Web GUI 在那里 客户端是否在 3600 秒后重定向到 IdP 以颁发新的访问令牌并不重要 但桌面应用程序需要 24 7 运行 或者
  • 根据 URL 前缀执行不同的操作

    这是我的情况 我正在我的 ios 应用程序上本地调用文件 在 Swift 中运行 如果文件是 jpg 则发生一个操作 如果文件是 mp4 则发生另一个操作 为此 我使用这段代码 let urlString posts selectedInd
  • 延迟的作业和操作邮件程序

    我在使用 ActionMailer 实施延迟作业时遇到问题 延迟实施工作之前 class NotificationsMailer lt ActionMailer Base default from gt email protected de
  • Ionic - 没有互联网连接

    我们正在使用 Ionic Cordova 构建 Android 应用程序 这一切都在我的浏览器中运行 但是当我构建它并运行 apk 时 会发生这种情况 外部图像不会出现 嵌入的谷歌地图仍为空 我们的index html中有以下代码
  • 如何因 Django 中的不活动而使会话过期?

    我们的 Django 应用程序具有以下会话管理要求 当用户关闭浏览器时 会话就会过期 会话在一段时间不活动后就会过期 检测会话何时因不活动而过期并向用户显示适当的消息 在不活动期结束前几分钟警告用户会话即将到期 除了警告之外 还为用户提供延
  • CoreData 唯一约束在 Xcode 中消失

    我想做的事 为属性添加唯一约束photoID在实体中PhotoUpload Problem 我点击约束并添加photoID 当我导航到另一个文件并返回到xcdatamodeld文件中 约束不存在 它会自动删除 所以唯一约束不起作用 到目前为
  • java 8 中的函数式接口如何工作

    这是我在研究函数式接口概念时遇到的一个例子 interface Sayable void say public class MethodReference public static void saySomething System out