使用构造函数引用,其中构造函数具有非空参数列表

时间:2016-04-12 04:00:19

标签: 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)&#34;可以替换为方法参考&#34;。

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

1 个答案:

答案 0 :(得分:8)

  

我知道no-arg构造函数的Foo::new语法

这不是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参数的构造函数。