gpt4 book ai didi

java - 是否有可用于任何 lambda 的无操作 (NOP) 的方法引用?

转载 作者:IT老高 更新时间:2023-10-28 20:26:58 27 4
gpt4 key购买 nike

这听起来像是一个奇怪的问题,但是有没有办法在 Java 8 中为 Lambda 引用标准的无操作(又名空操作、空模式方法、无操作、无操作方法)方法.

目前,我有一个方法,比如说,void foo(Consumer<Object>) ,我想给它一个空操作,我必须声明:

foo(new Consumer<Object>() { 
public void accept(Object o) {
// do nothing
}
}

我希望能够在哪里做类似的事情:

foo(Object::null)

相反。类似的东西存在吗?

不确定这将如何与多参数方法一起使用——这可能是 Java 中 lambda 的一个缺陷。

最佳答案

这不是缺点。

Java 中的 Lambda 是函数式接口(interface)的实例;反过来,它又被抽象为 Java 构造的实例,这些实例可以简化为 一个 单个抽象方法或 SAM。

但是这个 SAM 仍然需要有一个有效的原型(prototype)。在你的情况下,你想要一个无操作 Consumer<T>无论 T 什么都不做.

它仍然需要是 Consumer<T>然而;这意味着您可以提出的最小声明是:

private static final Consumer<Object> NOOP = whatever -> {};

并使用 NOOP你需要的地方。

关于java - 是否有可用于任何 lambda 的无操作 (NOP) 的方法引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29851525/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com