Gegeben ..Verwendung von Konstruktor Referenz wo Konstruktor hat eine nicht leere Parameterliste
List<Foo> copy(List<Foo> foos) {
return foos
.stream()
.map(foo -> new Foo(foo))
.collect(Collectors.toList());
}
IntelliJ IDEA 2016.01.01 berichtet, dass new Foo(foo)
„kann mit der Methode Referenz ersetzt werden“.
Ich bin der Foo::new
-Syntax für den Konstruktor no-arg bekannt, aber sehe nicht, wie ich foo
in als Argument übergeben konnte. Ich verpasse hier sicher etwas.
Beginnen Sie immer mit der funktionalen Schnittstelle. 'map()' nimmt eine 'Funktion', die einen Parameter akzeptiert und einen Wert zurückgibt. Beim Zuordnen eines Konstruktorreferenz zu einer 'Funktion' ist der Rückgabewert offensichtlich der Typ, der konstruiert wird, aber da' Funktion' einen Parameter benötigt, muss auch der Konstruktor. Wenn der Funktionstyp eine BiFunktion gewesen wäre, hätte er nach einem Konstruktor mit zwei Parametern gesucht. Wenn der Funktionstyp ein "Lieferant" gewesen wäre, der keine Parameter akzeptiert, hätte er einen Konstruktor ohne Argumente aufgerufen. –