Java 8 - Wie Prädikat verwenden, das eine Funktion mit Parameter hat?

8

Ich habe den folgenden Code:

%Vor%

Was ist der richtige Weg, um es in Java 8 Stream s zu konvertieren?

Wenn ich versuche, map() zu verwenden, erhalte ich einen Fehler, da getAttribute kein Function ist.

%Vor%     
Nimrod 01.09.2015, 13:03
quelle

2 Antworten

10

Sie können nicht genau das machen, was Sie wollen - explizite Parameter sind in Methodenverweisen nicht erlaubt.

Aber du könntest ...

... erstellen Sie eine Methode, die einen booleschen Wert zurückgibt und den Aufruf an getAttribute("style") :

harcodiert %Vor%

Damit können Sie die Methode ref:

verwenden %Vor%

... oder Sie könnten eine Variable definieren, die die Funktion enthält:

%Vor%

Damit können Sie einfach die Variable übergeben

%Vor%

... oder du könntest die beiden oben genannten Ansätze kombinieren und kombinieren (das ist sicherlich furchtbar übertrieben)

%Vor%

Dann müssten Sie toAttributeExtractor aufrufen, um eine Function zu erhalten und diese an die map übergeben:

%Vor%

Obwohl es realistischer wäre, einfach ein Lambda zu verwenden, wäre (wie in der nächsten Zeile) einfacher:

%Vor%     
Boris the Spider 01.09.2015, 13:11
quelle
5

Sie können einen Parameter nicht an eine Methodenreferenz übergeben. Sie können stattdessen einen Lambda-Ausdruck verwenden:

%Vor%     
Eran 01.09.2015 13:05
quelle