private String boundaries = "(x > 750) & (x < 900)";
if (boundaries) {
//Do stuff
}
我希望能够将字符串用作if子句中的变量,然后独立更改字符串,而无需编辑代码本身。示例的想法不起作用,我想知道它是否有错误或其他方式不使用字符串。
谢谢。
答案 0 :(得分:8)
Java不是动态编译的语言,因此如果您想要使用Java中的Javascript来表达这种表达式,那么可以使用Java。
试试这段代码:
String boundaries = "(x > 750) & (x < 900)";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
engine.eval("var x = 810;"); // Define x here
engine.eval("var bln = false;")
engine.eval("if (" + boundaries + ") bln = true; ")
if((boolean)engine.eval(bln)) {
// Do stuff
}
希望这会有所帮助。 参考:Oracle: Java Scripting Programmer's Guide
答案 1 :(得分:0)
从这个意义上讲,Java不是动态编译的语言。
您可以使用beanshell在运行时编译代码,或使用JavaScript框架实现表达式。
在Java中,最简单的选择是执行此操作
int min = Integer.parseInt(minAsString);
int max = Integer.parseInt(maxAsString);
if (x > min && x < max) {
// do stuff
}