Dies ist leider Art von hässlich. Ich habe eine Zeichenfolge in einem Format geschrieben, das als Einschränkung zu einer Datenbank gesendet wird. Es sieht etwa so aus:Wie man einen String logischen Ausdruck zu ausführbarem Java-Datei Ausdruck konvertieren
String constraint = "((attr1 eq 1) OR (attr2 eq 5)) AND (attr3 BETWEEN (1, 5))"
Ich brauche einen Weg, dies in einen Strom-Filter von Parsen, wie so aussehen:
stream.filter(obj ->
(obj.getAttr1() == 1 || obj.getAttr2() == 5) && (isBetween(obj.getAttr3(), 1, 5)))
die isBetween Methode an anderer Stelle ist, ob der attr3 Wert bestimmen würde, ist zwischen 1 und 5. Gibt es eine einfache Möglichkeit, dies zu analysieren?
sollte es in Ordnung sein mehrere Filter zu haben, vielmehr ruft als sie alle in einem passt. Die Entscheidung, welche GetAttr zu können entlang der Linien in einer if-Anweisung erfolgen:
if (attr.equals("attr1")) {
obj.getAttr1();
}