Der Versuch, eine Sammlung mit einem Stream zu filtern und das folgende Lambda an filter() zu übergeben, ein Set, das den arkanen Fehler in der Titel:Java Lambda in Intellij: Erwartet nicht null, aber der Lambda-Text ist nicht wertkompatibel
unmatchedIncomingFields.stream().filter(s-> s.matches(fieldMatchPattern))
Zwischenzeit ein Prädikats Objekt erstellt funktioniert:
unmatchedIncomingFields.stream().filter(new Predicate<String>() {
@Override
public boolean test(String s) {
return s.matches(fieldMatchPattern);
}
});
nach dem JLS, eine Lambda-Körper ist „Wert-kompatibel“, wenn jeder Steuerpfad einen Wert zurückgibt. matches() wird immer aufgerufen und gibt immer einen booleschen Wert zurück, so dass ich das Problem nicht verstehe.
Ich habe auch alle Arten von Variationen der gleichen lambda- mit und ohne Klammern und Argumenttypen und die Verwendung von Ausdruck und Block-mit-Rückkehr Körper versucht.
Was ist der Typ von 'unmatchedIncomingFields'? –
Können Sie ein kleines reproduzierbares Beispiel und die von Ihnen verwendete Compiler-Version angeben? –
@AlexisC. Der Compiler ist 1.8.0_77. Ich arbeite daran, eine Demonstration zu bekommen. – ThisIsNoZaku