这是什么意思?爪哇

问题描述

something().orElseGet(() -> (a,b,c) -> {})
                   // ^----this part------^

其中(a,c)是具有abc参数的方法。例如:Method(a,c)返回了一些内容。

我的问题是在实践中,此功能接口的作用是什么,对我来说很混乱。

解决方法

它返回一个Supplier,然后提供三个参数方法的实现(a,b,c) -> {}

通常,Java中的所有方法参数都会在调用方法后立即进行评估。

这意味着,在orElseGet((a,c) -> {})的假设情况下,无论是否需要,都会始终创建该方法。但是由于只有在没有其他值时才需要它,因此拥有中间供应商意味着仅在实际需要时才创建该方法。

由于在不存在任何价值的情况下使用的价值可能会任意创建,因此供应商可能节省大量时间。在您的情况下,差异不会太大(创建供应商或创建lambda的成本可能大致相等)。但是在其他情况下,获得该值可能涉及数据库查找,字符串串联等,在这种情况下,仅在实际需要时才执行这些操作会带来巨大的好处。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...