【问题标题】:Using a string as a variable clause in an if statement [duplicate]在 if 语句中使用字符串作为变量子句 [重复]
【发布时间】:2014-01-26 19:39:39
【问题描述】:
private String boundaries = "(x > 750) & (x < 900)";
if (boundaries) {
//Do stuff
}

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

谢谢。

【问题讨论】:

标签: java


【解决方案1】:

Java 不是动态编译的语言,所以如果你想评估这样的表达式,你可以使用 Java 中的 Javascript。

试试这个代码:

      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

【讨论】:

【解决方案2】:

从这个意义上说,Java 不是一种动态编译的语言。

你可以做的是在运行时使用beanshell编译代码,或者使用JavaScript框架来实现表达式。

在 Java 中,最简单的选择就是这样做

int min = Integer.parseInt(minAsString);
int max = Integer.parseInt(maxAsString);
if (x > min && x < max) {
   // do stuff
}

【讨论】:

    猜你喜欢
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 2016-05-15
    • 2020-04-16
    相关资源
    最近更新 更多