Von den folgenden Zeilen, warum ist die erste und letzte erlaubt?Wann soll ich Doppelpunkt Doppelpunkt mit Lambda verwenden?
List<String> l = new ArrayList<>();
l.stream().forEach(System.out::println);//compiles
l.stream().forEach(System.out.println(String::compareTo));//doesnt compile
l.stream().forEach(String::compareTo);// doesnt compile
String comparedWith = "";
l.stream().forEach(comparedWith::compareTo);//compiles why ?
bearbeiten
Wenn compareToein Argument nimmt, sollte es nicht auch funktionieren?
Wenn docs gemäß:
eine Operation darstellt, die kein Ergebnis ein einziges Eingabeargument und kehren annimmt. Im Gegensatz zu den meisten anderen funktionalen Schnittstellen wird erwartet, dass {@code Consumer} über Nebeneffekte funktioniert.
Warum ist das dritte Beispiel dasselbe wie '(String x, String y) -> x.compareTo (y)', können Sie das bitte ausführen? –
@estebanrincon, weil 'String's Methode' compareTo' nicht statisch ist und daher einen String benötigt, der aufgerufen werden soll; Es nimmt auch einen anderen String als Argument. – immibis
Ah, verstanden, danke! –