Ich habe ein Programm, das Text für bestimmte Attribute analysiert. Die Grundstruktur des Codes ist das gleiche für alle Attribute es nur in einer Zeile variiert: webDataField.containsAttributeXYZ();
wie hier zu sehen:Prädikate in Java 8
for (int index = 0; index < fields.size(); index++) {
WebDataField webDataField = fields.get(index);
boolean expectedCondition = webDataField.containsAttributeXYZ(); // Varies at this line..
Double score = evaluateBooleanCondition(actualCondition, expectedCondition);
WebDataFields fieldName = webDataField.getFieldName();
...
}
Statt den gleichen Code für jede Bedingung zu schreiben (& mich in Code zu wiederholen) Ich würde möchte den Hauptteil des Codes einmal schreiben und die Bedingung (die wahr oder falsch ergibt) an die Methode übergeben.
Ich bin neu zu Java Predicate
aber wenn ich richtig verstehe, ist dies genau die Funktion von Prädikaten in Java.
Erzwingt dies, dass ich jede Bedingung in eine eigene Klasse schreibe und dann diese Klasse die Schnittstelle Predicate
implementieren lasse?
Wenn ja, wird die Funktion (die zuvor in einer Klasse deklariert wird, die ähnliche Funktionen enthält) müssen wie etwas umgewandelt werden:
class ContainsAttributeXYZ implements Predicate<Boolean>
Dies würde bewirken, dass der Code desorientiert werden und eine große auslösen Erhöhung der Anzahl der Klassen im Programm (da jede Funktion in eine Klasse umgewandelt werden muss)
Oder habe ich etwas falsch verstanden, wie Prädikate in Java funktionieren? Gibt es eine andere Möglichkeit, dies zu tun? Hier
Dank
Ich bin mir nicht sicher, was Sie fragen. Ein 'Prädikat' muss nicht als Klasse deklariert werden. Zum Beispiel, 'Prädikat p = (String s) -> s.length()> 5;' wird tun. –
bradimus
Ein 'Prädikat' macht nicht viel Sinn. Wahrscheinlich möchten Sie 'Prädikat '. –
Wie kommt es, dass Sie das [lambda] -Tag hinzugefügt haben und doch scheinbar keine Ahnung haben, was sie sind? – 4castle