Tag: eval

我可以严格评估在Java中存储为字符串的布尔表达式吗?

我希望能够评估存储为字符串的布尔表达式,如下所示: “hello” == “goodbye” && 100 < 101 我知道SO上已经有很多这样的问题了,但是我问这个问题因为我已经尝试过这个问题最常见的答案, BeanShell ,它允许评估像这样的语句 “hello” == 100 没有任何麻烦。 有没有人知道一个FOSS解析器会抛出操作数不匹配等错误? 或者BeanShell中有一个设置可以帮助我吗? 我已经尝试过Interpreter.setStrictJava(true)。 为了完整起见,这是我目前使用的代码: Interpreter interpreter = new Interpreter(); interpreter.setStrictJava(true); String testableCondition = “100 == \”hello\””; try { interpreter.eval(“boolean result = (“+ testableCondition + “)”); System.out.println(“result: “+interpreter.get(“result”)); if(interpreter.get(“result”) == null){ throw new ValidationFailure(“Result was null”); } } catch (EvalError e) […]

Java:从ScriptEngine javascript返回一个对象

我正在尝试使用ScriptEngine类来评估Java中的javascript。 这是我想要做的一个简短的例子: import javax.script.ScriptEngineManager; import javax.script.ScriptEngine; public class Test { public static void main(String[] args) { ScriptEngine engine = new ScriptEngineManager().getEngineByName(“js”); //Creates a ScriptEngine Object obj = engine.eval(“var obj = { value: 1 }; return obj; “); // Evals the creation of a simple object System.out.println(obj.value); // I get an invalid token error when trying […]

布尔表达式求解器/简化器

我正在寻找一个非常大(但不复杂)的代数的布尔表达式求解器: BoolscheAusdrückevereinfachen(Axiome)我想要一些代码(c ++或java [或库])来简化巨大的布尔表达式。 我还没发现什么。 我只是想做一些“简单”转换,如: a && ~a -> 0 a || a && (b || c) -> a 但更长。 我想在目前使用符号(a,b,c1,d1 ..)而不是TRUE,FALSE,0或1。 先谢谢你。 编辑:如果我自己写,我可以使用Javaluator并评估。 当我有: (adb+c) && d我想从繁多开始。 有人有想法吗?

Java中eval()的ImplementIon

我的问题与Java中不存在函数eval()的现象有关。 在互联网上阅读了一些内容之后,我发现我能做的最好的事情就是创建自己的解析器作为Java函数。 但是怎么做呢? 我实际需要的是一个函数,它读取上面数组的第一列并一个接一个地返回所有这些值。 但请注意,这些值是字符串存储在String数组中,因此是字符串,但它们代表不同类型的对象,比如X1,X2,X3,X3等。 如果我设法读取这个String值,比如说x1,作为一个对象,比如说X1,我就可以用它来调用一些与对象有关的函数,比如x1.classifyInstance(等等等等等等); 希望有人对如何解决这个问题有任何想法…! 编辑:这个post与我的第一篇post紧密相连!

我怎么能动态调用Java代码?

我怎么能编写像eval函数一起使用的javascript代码执行的Java代码? 我想要实现的是这样的: System.execute(“String str = \”test \“; System.out.println(str);”​​); 这将打印’测试’一词。 (10x dehmann) 代码示例会有很大帮助。

如何用Java中的字符串创建对象(如何评估字符串)?

我知道eval是“邪恶的”,但我正以一种用户不能滥用它的方式使用它。 假设我有一个字符串“new Integer(5)”。 我想做一些事情,我可以设置一个变量,比如说foo,给新的Integer(5)。 就像是 Integer foo; String bar = “new Integer(5)” *magic happens* System.out.println(foo) -> 5 我环顾四周,看起来我有几个选择。 ToolProvider中的getSystemJavaCompiler()方法可以这样做吗? 或者我应该使用BeanShell? 或者还有其他什么? 请注意,这是来自字符串,而不是文件。