Java 8 Lambda 表达式——方法重载疑惑

2023-12-01

我正在尝试学习 Lambda 表达式,

interface MathOperartor对于 int 和 float 类型,operate() 已重载,我确信这应该可以使用 Lambda 表达式来完成,但似乎不太清楚问题出在哪里:

public static void main(String[] args) {
    LambdaLearning lb = new LambdaLearning();

    MathOperartor add = (a , b )->  a + b;  // error: The target type of this expression must be a functional interface
    MathOperartor sub = (a , b) -> a - b;   // same error
    MathOperartor mul = (a , b) -> a * b;   //  ''
    MathOperartor div = (a , b) -> a / b;   //  ''

    System.out.println(lb.operate(10, 15, add));
    System.out.println(lb.operate(10.5f, 15.5f, sub));
    System.out.println(lb.operate(10, 15, mul));
    System.out.println(lb.operate(10, 15, div));

}

interface MathOperartor{
    public Object operate(int a, int b);
    public Object operate(float a, float b);
}

private Object operate(int a, int b, MathOperartor math){
    return math.operate(a,b);
}
private Object operate(float a, float b, MathOperartor math){
    return math.operate(a,b);
}

请让我知道我在这里做错了什么并提出修复建议......

Update:

好的,所以我理解了这个概念功能接口,我的问题也是关于实现我在上面的代码中尝试做的事情,我找到了几种方法来做到这一点。

谢谢大家的宝贵回答!


A 功能接口必须是一个SAM界面:

函数式接口只有一个抽象方法。由于默认方法有一个实现,因此它们不是抽象的。如果一个接口声明了一个覆盖 java.lang.Object 的公共方法之一的抽象方法,那么它也不会计入该接口的抽象方法计数,因为该接口的任何实现都将具有来自 java.lang.Object 或其他地方的实现。

你的接口已经声明了 2abstractlambda 表达式不知道去哪里的方法,并且 lambda 表达式是该接口的实例,这意味着它必须实现该接口中声明的所有抽象方法。但你可以添加默认方法在这种情况下解决您的问题,例如:

interface MathOperartor{
  //it also can be removed, since a int can cast to a float automatically
  default Object operate(int a, int b){
     return operate((float)a, (float)b);
  }
  public Object operate(float a, float b);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 8 Lambda 表达式——方法重载疑惑 的相关文章

  • Spring控制器是线程安全的吗

    我遇到了这个控制器示例 想知道它是否是线程安全的 我特别想知道 gson 实例变量 import org springframework stereotype Controller import org springframework we
  • 任务“:app:dexDebug”执行失败

    我目前正在处理我的项目 我决定将我的 Android Studio 更新到新版本 但在我导入项目后 它显示如下错误 Information Gradle tasks app assembleDebug app preBuild UP TO
  • Google 地图查询返回的 JSON 包含像 \x26 这样的编码字符(如何解码?)

    在 Java 应用程序中 我获取 JSON 来自 Google 地图 其中包含以下字符 x26我想将其转换为其原始字符 据我所知 这是一个 UTF 8 表示法 但我不完全确定 在源 JSON 中 可能会出现各种编码字符 例如 x3c div
  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • 场景生成器删除 fxml 文件中的导入

    我使用场景构建器 Gluon Scene Builder JavaFX Scene Builder 8 1 1 来创建应用程序的 UI 并使用 Eclipse 开发 JavaFX 现在 每次我在场景生成器中保存某些内容时 它都会从 fxml
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 如何在keycloak中动态编辑standalone.xml文件

    我正在尝试通过 docker 编辑standalone xml 并尝试添加 但 keycloak 正在使用它standalone xml 但我可以看到standalone xml 文件中的更改 我需要在standalone xml 文件中添
  • 我想要一个 Java 阿拉伯语词干分析器

    我正在寻找阿拉伯语的 Java 词干分析器 我找到了一个名为 AraMorph 的库 但它的输出是无法控制的 并且它会形成不需要的单词 还有其他阿拉伯语词干分析器吗 这是新的阿拉伯语词干分析器 Assem 的阿拉伯语轻词干分析器 http
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • MongoDB Java 驱动程序:MongoCore 驱动程序与 MongoDB 驱动程序与 MongoDB 异步驱动程序

    MongoDB Java 驱动程序有三种不同的驱动程序选项 核心驱动 MongoDB 驱动程序 MongoDB 异步驱动程序 The 驱动程序描述页面 https docs mongodb org ecosystem drivers jav

随机推荐

  • 从 Blob 保存到本地文件

    我有一个难题要问你 我已经为此苦苦挣扎了一段时间 我正在寻找一种解决方案 我可以将文件保存到用户计算机 而无需本地存储 因为本地存储有 5MB 限制 我想要 保存到文件 对话框 但我想要保存的数据只能在 JavaScript 中使用 我想阻
  • Java String.replace/replaceAll 不工作

    因此 我试图解析 Java 中包含 左 方括号的字符串输入 我有str replace 但这绝对没有任何作用 我试过了replaceAll另外 具有多个不同的正则表达式 但输出始终保持不变 我想知道这是否可能是由于我所有的反斜杠字符都显示为
  • 影响 d3.js 中多个单独图表的交互?

    我正在尝试在 d3 js 中创建一个数据可视化 其中包含两个图表 一个平行轴图和水平颜色条图 我只是起了这个名字 但它基本上是一系列彩色矩形 平行轴图中的每条线都与颜色条图中的一组矩形相关联 现在 将鼠标悬停在给定的线上会突出显示该行 并将
  • 将 docker-compose 与 docker swarm 结合使用

    我在用着docker 1 12 1我有一个简单的 docker compose 脚本 version 2 services jenkins slave build slave image jenkins slave 1 0 restart
  • React-Native:无法在 Android 设备上以发布模式显示远程图像

    我正在我的 Android 设备 三星 9 Android 9 API 28 中运行一个简单的反应本机应用程序 因此在调试模式下 使用此命令行可以正常工作 react native run android 这是结果 但在释放模式下 reac
  • Jersey/REST--NoSuchMethodError:com.sun.jersey.core.reflection.ReflectionHelper.getContextClassLoaderPA()Ljava/security/Privilege

    当尝试使用 jersey 构建 REST 服务时 我收到 NoSuchMethodError 错误 任何帮助将非常感激 我的 POM xml
  • GetExtendedTcpTable 不返回与 netstat -ano 相同的结果

    我使用此代码来获取我的电脑中打开的端口的列表以及使用每个端口的应用程序 string Port GetListOfTcpPorts string ApplicationName string result string aux string
  • 通过测试侦听器删除(重复)失败的 TestNG 结果

    类似于这里发布的解决方案TestNG 重试失败的测试不会输出正确的测试结果 我尝试在 onFinish ITestContext context 期间使用测试侦听器删除 重复的 测试结果 尽管使用 context getFailedTest
  • Visual Studio 2012如何绘制窗口边框?

    如何使用 Windows 窗体实现与新的 Visual Studio 2012 主窗口中看到的相同的 alpha 边框效果 它的窗户似乎在发光 所以我不确定这是否是最好的方法 但是如果您使用 Spy 32 位 并查看窗口 您可以看到在 Vi
  • 使用 Sparklyr 完成时间序列

    我试图在我的时间序列数据集中找到丢失的分钟数 我为一个小样本的本地性能编写了一个 R 代码 test lt dfv gt mutate timestamp as POSIXct DaySecFrom UTC gt complete time
  • 使用枢轴点缩放画布后,x 和 y 坐标错误

    我正在尝试在画布上实现缩放 该缩放应集中在枢轴点上 缩放工作正常 但之后用户应该能够选择画布上的元素 问题是 我的平移值似乎不正确 因为它们的偏移量与我不缩放到枢轴点的值不同 缩放没有枢轴点并拖动效果很好 我使用了一些代码这个例子 相关代码
  • 为什么 python 字符串 split() 不分割

    我有以下 python 代码 class MainPage BaseHandler def post self location id reservations self request get all reservations for r
  • 除了 build/target 文件夹之外,简单的 spring-boot jar 不起作用

    我有一个简单的 spring boot 应用程序 但除了从 target build 文件夹运行之外它不起作用 这是我的所有配置和文件 请帮助我找出为什么它不起作用以及我做错了什么 当我从目标文件夹运行时它工作得很好java jar tar
  • React Router 中 到底有什么用?

    我是 React 学习的新手 并尝试使用react router dom 构建一个应用程序 当我遇到 交换机 这个术语时 我能够实现基本的路由 谁能用我们使用 switch 的用例示例向我解释一下它的用途是什么 由于您是新手 因此我将花费更
  • `$('#form').serialize()` 弄乱了 UTF-8 字符

    我正在使用 AJAX 插入表单并使用 form serialize 获取所有输入并将其发送到 insert php 问题是角色喜欢 become A9等等 在发送之前如何防止这种情况发生 或者当我通过 POST 检索它时如何获取正确的字符
  • 根据时间在 Gmail 中搜索电子邮件

    我想要一份昨天来自 Gmail 的所有电子邮件的列表 我正在尝试使用 google apps 脚本来处理它 方法是在我的收件箱上编写查询 然后使用 GmailApp search gmail 中的 after 和 before 搜索查询会返
  • 当应用程序在后台时,Firebase onMessageReceived 不会被调用

    我在 Android 应用程序中使用 Firebase 作为消息服务 我对 Firebase 研究了很多并且我明白应用程序在前台运行或现在运行是否会更改 onMessageReceived 方法中接收到的数据类型 我想要完成的是解析来自 R
  • 如何解决与 Windows 10 上安装 dlib 相关的问题?

    我正在尝试在 Windows 10 上为 python 3 7 安装 dlib 以进行人脸识别 我探索了几种方法 但遇到了错误 我尝试了以下步骤 使用 pip install cmake 安装了 cmake 这奏效了 从 Python 包索
  • 如何使用多个配置构建同一项目 C# VisualStudio2012

    我有很多项目的解决方案 我想构建多个具有多个配置设置的项目 e g ProjectA 设置为目标框架 3 5 和平台目标 x86 输出程序集名称是 ProjectA dll 我想在单击构建按钮时在多个输出文件中构建项目 ProjectA 3
  • Java 8 Lambda 表达式——方法重载疑惑

    我正在尝试学习 Lambda 表达式 interface MathOperartor对于 int 和 float 类型 operate 已重载 我确信这应该可以使用 Lambda 表达式来完成 但似乎不太清楚问题出在哪里 public st