当前位置: 首页 > 知识库问答 >
问题:

是否有可用于任何lambda的no op(NOP)的方法参考?

池麒
2023-03-14

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

目前,我有一个方法,比如说,采用void foo(消费者

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

我希望能够做这样的事情:

foo(Object::null)

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

不确定多参数方法如何工作——也许这是Java中lambdas的一个缺陷。

共有3个答案

强安和
2023-03-14

Function.identity()能满足您的需求吗?

返回始终返回其输入参数的函数。

平庆
2023-03-14

在您的特定情况下,您可以简单地执行以下操作:

foo(i -> {});

这意味着lambda表达式接收一个参数,但没有返回值。

双消费者的等价码

void bifoo(BiConsumer<Object, Object> consumer) { ... }

bifoo((a, b) -> {});
鲍国兴
2023-03-14

这不是不足。

Java中的lambda是功能接口的实例;反过来,它们被抽象为Java构造的实例,可以简化为一个抽象方法或SAM。

但这个SAM仍然需要一个有效的原型。在您的情况下,您希望有一个无操作消费者

它仍然需要是消费者

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

并在需要的地方使用NOOP

 类似资料:
  • 我最近开始做一个POC来集成java Web应用程序和Dropbox。我发现尽管有一个用于Java的dropbox-core-sdk。但是由于某些原因,dropbox没有为java提供同步库(同步库仅适用于Android/iOS)。 1)我们可以在java Web应用程序中使用android同步api吗?

  • 我们都知道,有时候cloudflare喜欢检查他们的客户访问者,以确保访问者不是真正的人。安全检查要求我们通过谷歌recaptcha。我想问的是,是否有可能通过使用我们自己的服务器(即使与远程服务器和回答验证码由我们自己等),以及如何?

  • > 拖放Selenium (选项1) 选项2 行为单击并按住(源)。暂停(2000年)。移动到元素(目标)。释放()。build()。执行(); 我尝试过这两种选择,我正在开发Selenium 3,有没有其他方法可以实现它。 注:不建议使用机器人类

  • 问题内容: 我正在编写一个Java程序,用于从POP3电子邮件中下载附件。最初,我通过获取MimePart的内容类型得到验证的输入流来执行此操作。然后,我可以简单地通过FileOutputStream将输入流写入本地文件。 但是,我遇到的一件事是,当我收到一封带有附件的电子邮件作为唯一内容并访问它之后,该邮件(消息类型)仅由一个部分组成,即文本/普通类型。其内容包括大量随机外观的字符。 通过互联网

  • 问题内容: 编辑:我改变了一些例子,以获得想法: 喜欢 …而无需创建公共接口并为Integer和Float创建子类来实现它 如果没有,类似这样的东西可能会更有意义并且有用 如果呢?是一个通配符,为什么我们不应该限制某些类型? 问题答案: 在非常极端的情况下(没有的Java 7之前的版本),我也希望能够做到这一点。例如 不管实际的类型是什么,这都允许我打电话。换句话说,将包含所有提供的类型的“ AP

  • 问题内容: 例如: 要么 这些名称或破折号有问题吗? 问题答案: 老实说,这取决于个人开发人员和他们自己的感受。就像您建议的那样,有两种同样好的构造CSS类的方法: 它们可以达到相同的目的,但是当您开始广泛思考时,您会发现这些样式之间的差距有多大。 分离班使他们可以重复使用: 该干的惯例是从不重复自己。通过分离or类,我们可以 重用 相同的类: 在第二种方法中-使用分隔符,代码将是: 在像这样的简