1
這很不幸有點醜。我有一個格式的字符串,作爲約束髮送到數據庫。它看起來是這樣的:如何將字符串邏輯表達式轉換爲java可執行表達式
String constraint = "((attr1 eq 1) OR (attr2 eq 5)) AND (attr3 BETWEEN (1, 5))"
我需要解析成一個流過濾器這樣的方式,看起來像這樣:
stream.filter(obj ->
(obj.getAttr1() == 1 || obj.getAttr2() == 5) && (isBetween(obj.getAttr3(), 1, 5)))
的isBetween方法是其他地方將決定attr3值是否在1和5之間。有沒有簡單的解析方法?
應該很好,可以有多個過濾器調用,而不是將它們全部合併爲一個。決定GETATTR使用可在沿線的if語句來完成:
if (attr.equals("attr1")) {
obj.getAttr1();
}