在if语句中使用字符串作为变量子句

时间:2014-01-26 11:16:24

标签: java

private String boundaries = "(x > 750) & (x < 900)";
if (boundaries) {
//Do stuff
}

我希望能够将字符串用作if子句中的变量,然后独立更改字符串,而无需编辑代码本身。示例的想法不起作用,我想知道它是否有错误或其他方式不使用字符串。

谢谢。

2 个答案:

答案 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
}