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

system.out::println的等效lambda表达式是什么

刁瀚昂
2023-03-14

我偶然发现以下Java代码使用了system.out.println的方法引用:

class SomeClass {
    public static void main(String[] args) {
           List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8,9);
           numbers.forEach(System.out::println);
        }
    }
}

system.out::println的等效lambda表达式是什么?

共有1个答案

霍财
2023-03-14

方法引用system.out::println将首先计算system.out,然后创建捕获计算值的lambda表达式的等效值。通常,您将使用
o->system.out.println(o)来实现与方法引用相同的结果,但此lambda表达式将在每次调用方法时对system.out进行计算。

因此一个完全等同的是:

PrintStream p = Objects.requireNonNull(System.out);
numbers.forEach(o -> p.println(o));

如果有人调用system.setout(…);介于两者之间,这将会有所不同。

 类似资料:
  • 问题内容: 我偶然发现了以下Java代码,该代码使用了方法参考 等价的lambda表达式是什么? 问题答案: 方法参考将首先求值,然后创建一个等效的表达式来捕获求值。通常,你将使用 与方法引用相同的方法来实现,但是此lambda表达式将在每次调用该方法时求值。 因此,确切的等效条件是: 如果有人;在两者之间进行调用,则会有所不同。

  • 我在Java 1.8中有以下代码。 如果没有lambda,如何将其转换为Java 1.7代码?

  • (译注:目前支持lambda的gcc编译器版本为4.5,其它详细的编译器对于C++11新特性的支持请参考http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport) Lambda表达式是一种描述函数对象的机制,它的主要应用是描述某些具有简单行为的函数(译注:Lambda表达式也可以称为匿名函数,具有复杂行为的函数可以采用命名函数对象,当然,何谓复杂

  • Lambda表达式在Java 8中引入,并被吹捧为Java 8的最大特性.Lambda表达式有助于函数式编程,并简化了很多开发。 语法 (Syntax) lambda表达式的特征在于以下语法。 parameter -> expression body 以下是lambda表达式的重要特征。 Optional type declaration - 无需声明参数类型。 编译器可以从参数的值推断出相同的

  • 本文向大家介绍python 什么是lambda表达式?它有什么好处?相关面试题,主要包含被问及python 什么是lambda表达式?它有什么好处?时的应答技巧和注意事项,需要的朋友参考一下 简单来说,lambda表达式通常是当你需要使用一个函数,但是又不想费脑命名一个函数的时候使用,也就是通常所说的匿名函数

  • 我被与的对比所困扰 我正在尝试验证客户端的用户输入值。对于它们的名字和姓氏,我有一个表达式,它适用于; 我需要JavaScript Regex的équivalent 我有很多困难的时间来解决它,没有任何工作。 Ex; null 非常感谢您的帮助。