java - 在构造函数具有非空参数列表的情况下使用构造函数引用

标签 java intellij-idea java-8 java-stream method-reference

鉴于..

List<Foo> copy(List<Foo> foos) {
    return foos
            .stream()
            .map(foo -> new Foo(foo))
            .collect(Collectors.toList());
}

IntelliJ IDEA 2016.1.1 报告 new Foo(foo)“可以用方法引用替换”。

我知道无参数构造函数的 Foo::new 语法,但不知道如何将 foo 作为参数传递。我肯定在这里遗漏了一些东西。

最佳答案

I'm aware of the Foo::new syntax for the no-arg constructor

这不是 Foo::new 所做的。 This expression will expand to what is needed in the context it's used.

在这种情况下

List<Foo> copy(List<Foo> foos) {
    return foos.stream().map(Foo::new).collect(Collectors.toList());
}

会寻找需要 Foo 参数的构造函数。

关于java - 在构造函数具有非空参数列表的情况下使用构造函数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36563400/

相关文章:

java - IntelliJ IDEA 快速引用字符串加变量

java - 如何在 Stream.map 方法中传递参数

java - 根据年份和年份中的星期获取 LocalDateTime

java - 从 Object[] 转换为 Comparable[] 时出现 ClassCastException

java - 从java应用程序调用acceleo模板

java - 需要了解核心java中的Boxing

scala - 如何满足 IntelliJ IDEA 对我的 scala 类的伴生对象声明进行测试的期望?

android - 当鼠标移开时关闭 IntelliJ 文档 (quick-doc) 窗口

java - 如何访问 try catch block 外的变量

java - 在 Java 8 流中转换类型