これは残念なことに醜いです。私は、データベースに制約として送られる書式で書かれた文字列を持っています。String論理式をJava実行可能式に変換する方法
stream.filter(obj ->
(obj.getAttr1() == 1 || obj.getAttr2() == 5) && (isBetween(obj.getAttr3(), 1, 5)))
isBetween方法がattr3値があるかどうかを判断することを他の場所である:私はそう見えるように、ストリームフィルタにこれを解析する方法が必要です
String constraint = "((attr1 eq 1) OR (attr2 eq 5)) AND (attr3 BETWEEN (1, 5))"
:それは次のようになります1と5の間です。これを解析する簡単な方法はありますか?
すべてを1つにまとめるのではなく、複数のフィルタ呼び出しを行うのはいいでしょう。あなたはEvalExに見えるしたいと思うかもしれ
if (attr.equals("attr1")) {
obj.getAttr1();
}