这是什么意思? Java
What does it mean? Java
something().orElseGet(() -> (a, b, c) -> {})
// ^----this part------^
其中 (a, b, c)
是具有 a
、b
和 c
参数的方法。例如:Method(a, b, c)
其中 returns 东西。
我的问题是在实践中这个功能接口部分是什么,对我来说这很混乱。
它returns一个Supplier
然后提供三参数方法实现(a, b, c) -> {}
通常,Java 中的所有方法参数都会在调用方法时立即求值。
这意味着,在 orElseGet((a, b, c) -> {})
的假设情况下,无论是否需要,该方法都会被创建。但是由于只有在没有其他值存在时才需要它,因此拥有中间供应商意味着该方法仅在实际需要时才创建。
由于在不存在任何价值的情况下使用的价值的创建成本可能是任意的,因此供应商可能会节省大量时间。在您的情况下,不会有太大区别(创建供应商或创建 lambda 在成本方面可能大致相等)。但是在其他情况下,获取值可能涉及数据库查找、字符串连接等,在这些情况下,仅在实际需要时执行这些操作可能会带来巨大好处。
something().orElseGet(() -> (a, b, c) -> {})
// ^----this part------^
其中 (a, b, c)
是具有 a
、b
和 c
参数的方法。例如:Method(a, b, c)
其中 returns 东西。
我的问题是在实践中这个功能接口部分是什么,对我来说这很混乱。
它returns一个Supplier
然后提供三参数方法实现(a, b, c) -> {}
通常,Java 中的所有方法参数都会在调用方法时立即求值。
这意味着,在 orElseGet((a, b, c) -> {})
的假设情况下,无论是否需要,该方法都会被创建。但是由于只有在没有其他值存在时才需要它,因此拥有中间供应商意味着该方法仅在实际需要时才创建。
由于在不存在任何价值的情况下使用的价值的创建成本可能是任意的,因此供应商可能会节省大量时间。在您的情况下,不会有太大区别(创建供应商或创建 lambda 在成本方面可能大致相等)。但是在其他情况下,获取值可能涉及数据库查找、字符串连接等,在这些情况下,仅在实际需要时执行这些操作可能会带来巨大好处。