Java 8 使用nashorn比较java中的字符串查询

Java 8 使用nashorn比较java中的字符串查询,java-8,nashorn,Java 8,Nashorn,我有以下代码: String query = "a == someRandomWord && b != 2"; ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); SimpleBindings variables = new SimpleBindings(); variables.put("a", "someRan

我有以下代码:

        String query = "a == someRandomWord && b != 2";

        ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");

        SimpleBindings variables = new SimpleBindings();
        variables.put("a", "someRandomWord");
        variables.put("b", 1);
        System.out.println(engine.eval(query, variables));
它给了我一个错误,因为我不允许将字符串作为参数传递

如何将字符串对象与
.eval()
函数进行比较

String query = "a == p && a != 2";
                    ^^^
                    this is not a string but a variable
使用
'yourString'
\'yourString\'
(因为您需要在Java中转义它),例如

或者:按照注释中的建议,为
p
提供绑定

使用
'yourString'
\'yourString\'
(因为您需要在Java中转义它),例如


或者:按照注释中的建议为
p
提供绑定。

这不是一个错误,因为
p
未绑定?未绑定?我不知道什么是未绑定的。如何解决这个问题?相比之下,您有两个变量:
a
p
——但是您在简单绑定中声明了变量
a
b
。变量
p
没有绑定到任何地方,如果这样做的话,javascript的严格版本会产生运行时错误,我很确定。问题是我想比较
a
是否是字符串。一些随机词。例如,is
a.equal(p)
。糟糕,我会把它改得更清楚这不是一个错误吗,因为
p
未绑定?未绑定?我不知道什么是未绑定的。如何解决这个问题?相比之下,您有两个变量:
a
p
——但是您在简单绑定中声明了变量
a
b
。变量
p
没有绑定到任何地方,如果这样做的话,javascript的严格版本会产生运行时错误,我很确定。问题是我想比较
a
是否是字符串。一些随机词。例如,is
a.equal(p)
。我的错,我会把它改得更清楚哦,问题是
字符串查询
,而不是
简单索引
。谢谢哦,问题在于
字符串查询
,而不是
简单索引
。谢谢
String query = "a == 'someRandomWord' && b != 2";