0

ブール式を評価する必要があります。目的は、タグ付けされたアイテムのセットをフィルタリングすることです。タグには任意の名前を付けることができます(たとえば、Java識別子など)。

例えば:

foo OR (bar AND !baz)

これは、タグ付けされたアイテムに当てはまります。

  • foo料金
  • foo bar boo
  • バー

どの名前が必要になるかは事前にはわかりません。JEXLを確認しましたが、JexlContextがありますこれは基本的に、評価の前に入力する必要のあるマップです。

識別子がtrueかfalseかを判断するためにコールバック関数を呼び出すライブラリが必要です。または、評価前に不明な識別子を許可するその他のメカニズム。

ビールのように無料である必要があるため(Mavenプラグイン用)、Jepは問題外です。

何が使えますか?

4

3 に答える 3

0

最も簡単な方法は、java6以降のJDKの一部であるJavaScriptを使用することです。これに例を示します。

    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("JavaScript");
    // populate variables foo, bar and baz to the engine, e.g.
    engine.put("foo", true);
    engine.put("bar", true);
    engine.put("baz", false);
    engine.eval("foo OR (bar AND !baz)"); 

詳細については、Oracleのチュートリアルを参照してください。

于 2011-12-12T18:35:51.213 に答える