Wie Prädikat und Funktion in einer Java-Funktion geeignet zusammenstellen?

9

Der Zweck besteht darin, ein neues Prädikat zu erstellen, das in einem Stream-Filter verwendbar ist:

%Vor%

getSubElement1OfTheElement() gibt Function<E,S> zurück (E enthält eine S-Eigenschaft) getPredicate1OnSubElement1() gibt Predicate<S>

zurück

Ich verwende statische Funktionen, um Methodenreferenzen und -funktionen anzuzeigen. Ich tue dies, weil der Stream in einer Velocity-Vorlage aufgerufen wird und dieser Kontext keine lambda-Syntax und Methodenreferenz unterstützt. Ich möchte keine statische Funktion für alle möglichen Kombinationen erstellen, also möchte ich wirklich, dass sie zusammenstellbar sind .

Zum Beispiel möchte ich hier kein statisches getPredicate1OnElementThatCheckProperty1OnTheSubElement1() haben, weil ich getSubElement1OfTheElement() und getPredicate1OnSubElement1() zusammenstellen kann.

Also ich brauche eine komponieren Funktion:

%Vor%

inspiriert von Gibt es eine bequeme Methode zum Erstellen eines Prädikats, das testet, ob ein Feld einem bestimmten Wert entspricht?

%Vor%

Bearbeiten:

Es wird als Cast-Kontext bezeichnet: Ссылка

%Vor%

Wir können also keine allgemeine Compose-Funktion implementieren, die irgendeine funktionale Schnittstelle (in meinem Fall Funktion und Prädikat) verwendet, weil der Name der abstrakten Methode für jede Schnittstelle unterschiedlich ist (in meinem Fall testen und anwenden) Ich bin damit einverstanden.

Zum Schluss, was ich wirklich brauche, sind zwei statische Funktionen, eine, die ein Prädikat in eine Funktion und umgekehrt konvertiert. Jedes Prädikat wird als Funktion verwendet, und die letzte Operation konvertiert die zusammengesetzte Funktion in Prädikat, um mit dem Parametertyp der Filterfunktion übereinzustimmen.

%Vor%

Stimmt das?
Wenn ja, besteht Interesse daran, die Grenzen in der Funktionssignatur freizugeben?

    
fdelsert 14.04.2017, 16:02
quelle

1 Antwort

3

Ich beantworte meine eigenen Fragen.

Verwenden Sie Lambda:

%Vor%

Oder wenn Sie eine Compose-Funktion wirklich schreiben wollen / müssen, muss die Signatur so aussehen:

%Vor%     
fdelsert 12.05.2017, 15:01
quelle