0

コードで MVEL 'in' 演算子を使用して式を評価しようとしています

List<String> countriesAvailable = new ArrayList<String>();
countriesAvailable.add("Australia");
countriesAvailable.add("France");
List<String> countriesVisited = new ArrayList<String>();
countriesVisited.add("Austria");
countriesVisited.add("France");
Map<String, List<String>> vars = new HashMap<String, List<String>>();
vars.put("countriesAvailable", countriesAvailable);
vars.put("countriesVisited", countriesVisited);
Boolean s = (Boolean) MVEL.eval("countriesVisited in countriesAvailable", vars);
System.out.println(s);

エラーを与える: 構文エラーまたは互換性のない型

4

1 に答える 1

3

これが解決策です。使用する必要がありますcontainsAll

また、2 番目のリストでオーストラリアのスペルが間違っていることにも注意してください。わざと評価を確認したのかどうかはわかりません。

    List<String> countriesAvailable = new ArrayList<String>();
    countriesAvailable.add("Australia");
    countriesAvailable.add("France");

    List<String> countriesVisited = new ArrayList<String>();
    countriesVisited.add("Austria");
    countriesVisited.add("France");

    Map<String, List<String>> vars = new HashMap<String, List<String>>();
    vars.put("countriesAvailable", countriesAvailable);
    vars.put("countriesVisited", countriesVisited);

    Boolean s = (Boolean) MVEL.eval(
            "countriesAvailable.containsAll(countriesVisited)", vars);

    System.out.println("Result = " + s);

Result = false

を使用してディスジョイントを実行することもできますjava.util.Collections。そして、それを否定してください。

Boolean s = 
   (Boolean) MVEL.eval(
         "!java.util.Collections.disjoint(countriesAvailable,countriesVisited)",
         vars);

Result = true

于 2013-07-02T22:07:14.473 に答える