问题内容: 我试图通过使用Runnable接口包装我需要的任何函数来简单地计时一个函数。 那么我可以简单地执行以下操作: 但是,如果我有一个带有参数的函数,则必须将其修改为: 我遇到的问题是’someParameter’必须是final或有效的final。有没有解决此问题的方法?我见过forEach的循环,但是我需要将此参数从1、10、100->指数化直到满足条件。代码是这样的: 我要求funct
问题内容: 如何在Java 8中执行类似的操作? 现在,我收到以下错误: 此表达式的目标类型必须是功能接口 问题答案: 根据JLS 第15.27节: 如果lambda表达式出现在程序中的某个环境中,而不是赋值上下文(第5.2节),调用上下文(第5.3节)或强制转换上下文(第5.5节),则这是编译时错误。 也可以在语句中使用lambda表达式。 然后,我们可以用四种不同的方式重写您的示例: 通过创建
问题内容: 在这篇文章中,我遇到了一些巧妙的代码,可以将Karl的Iterator转换为Stream 。我不得不承认我不完全理解如何在以下代码中将lambda分配给该类型… 我决定编写自己的小型测试,以确保它能够编译和执行。 我的理解是lambda 充当了供应商功能。 Iterable不是FunctionalInterface,因此如何为其分配lambda? 问题答案: 是 不是 “作为一个功能”
问题内容: 我正在尝试学习Lambda表达式, 已经为int和float类型重载了operator(),我确定使用Lambda表达式应该可以做到这一点,但似乎不太可能找出问题所在: 请让我知道我在这里做错了什么,并提出解决方法… 更新: 好的,所以我了解了 功能性接口 的概念,我的问题也是关于实现上述代码中我想做的事情,并且发现了几种实现方法。 感谢您的宝贵回答! 问题答案: 甲功能接口必须是一个
问题内容: 如果lambda函数中只有一条语句,我们可以省略为其定义完整的代码块的操作: 为什么引发异常的语句不是这种情况?这将产生一个编译错误,指出: 当然,将lambda主体包含在代码块中是可行的: 问题答案: 甲语句,那么,一个声明,而不是表达式所以它必须被置于括号内。根据本文的内容,Java专家组当时对lambda的语法进行了非正式调查,其中有四个选择: 稻草人 : BGGA :( 类似于
问题内容: 我想测试以下方法: 帮助器类在哪里,该类将接受lambda形式的Functional Interface实现,并将其存储以供以后执行。 有没有一种方法可以通过mockito验证是否已使用特定的lambda表达式调用了模拟方法: 意思是,我可以写这样的测试: 此测试将导致断言错误:参数不同!通缉: 实际调用有不同的参数: 这是有道理的,因为Mockito尝试比较功能接口的两个不同实现,它
问题内容: 我有一个JavaFX 8程序(用于跨平台的JavaFXPorts),可以完成我想做的事情,但只差了一步。该程序读取一个文本文件,对行进行计数以建立一个随机范围,从该范围中选择一个随机数,然后读取该行以进行显示。 我对Java有点陌生,但是似乎我是否使用Lambda都不显示下一个随机行,我的行期望一个静态值。 有什么想法可以调整我必须在每次按下屏幕按钮时简单显示var readln2的下
问题内容: 我在线路42和43的误差:, 未处理的异常类型InterruptedException的 。如果我尝试快速修复,它将使用catch Exception 创建try catch ,它将具有相同的错误,并且将尝试以相同的方式修复它,并继续用try catch包围它。 问题答案: 您已创建一个函数接口,该函数接口的方法声明为引发,这是一个已检查的异常。但是,你叫一个lambda表达式作为参数
问题内容: 我试图通过执行程序和可运行程序并行执行100个任务,该任务需要使用循环变量: 我在“我”的语气中a不休- 据我所知,由于每次迭代都会更改循环变量,因此无法使其成为最终变量或有效地成为最终变量。我找到了一个简单的解决方法, 在我看来,这并不是最有效的解决方案,因为每次迭代都要声明一个新变量。有更好的方法吗? 问题答案: 有更好的方法吗? 我对此表示怀疑。您的解决方案对我来说看起来不错,但
问题内容: 我有一个单词列表文本文件,我想从该文件中获取最小,最大和平均单词长度。 我有一个流方法: 在我的主要测试方法中,我正在打印最大和最小 它按预期工作。 问题: 是否有可能像我在min和max中那样获得单词长度的平均值?在这两种情况下,是或否,怎么做(仅作为Lambda表达式)? 问题答案: 该方法将为您提供一行流,而不是单词。有了之后,调用用单词替换行,并提供lambda表达式来拆分单词
问题内容: 鉴于这种: 编译器 对每种方法 执行的操作有什么 区别? 如果有的话,内存使用或运行时间是否有所不同?(即使很小,问题也只是学术上的) 问题答案: 这是Brett Oken链接的Brian Goetz的文档 的摘录: 当编译器遇到lambda表达式时,它首先将lambda主体降低(降低)到方法中 其参数列表和返回类型与lambda表达式的参数匹配,并可能带有一些其他参数(用于从词法范围
问题内容: 我刚刚开始玩Java 8和Lambda Expression,我很好奇是否可以通过返回特定值(例如null)从Lambda表达式内部停止Stream生成。Stream.generate()是否可能? 不幸的是,此代码不会终止,因此仅返回就不会退出流。 问题答案: 对于Lamdas,这是不可能的,您无法从表达式内部控制流。甚至API文档都说Stream.generate生成无限流。 但是
问题内容: 我注意到使用泛型和lambda重载方法的行为很奇怪。这个课程效果很好: 没有模棱两可的方法调用。但是,将其更改为此将使第二个调用不明确: 怎么会这样?为什么添加另一个参数会导致方法解析不明确?为什么在第一个示例中却能分辨出Supplier和Object之间的区别,而在第二个示例中却不能呢? 编辑:这是使用1.8.0_121。这是完整的错误消息: 问题答案: 如果我对JSE for Ja
问题内容: 我最近遇到了错误消息“空白的最终字段obj可能尚未初始化”。 如果您尝试引用可能尚未分配值的字段,通常就是这种情况。示例类: 我使用Eclipse。在该行中,我得到了错误,在该行中,一切正常。 到目前为止,这是有道理的。 接下来,我尝试在构造函数内部创建的匿名接口中访问。 这也行得通,因为在创建界面的那一刻我无法访问。我也可以将实例传递到其他地方,然后初始化对象,然后运行接口。(但是,
问题内容: 我了解为什么编译器不接受以下内容: 让我感到困惑的是,编译器接受以下内容,并且单元测试通过了: 为什么上述方法有效并且可以正常工作?欢迎使用指向JLS相关部分的指针(15.27.2节仅讨论局部变量)。 问题答案: 我们都同意第一个例子不能用,因为局部变量或参数必须是最终的或有效的最终才能在lambda表达式主体中使用。 但是您的第二个示例不涉及局部变量或参数,而是实例字段。Lambda