private String boundaries = "(x > 750) & (x < 900)";
if (boundaries) {
//Do stuff
}
我希望能夠使用字符串作爲if子句中的變量,然後獨立更改字符串而不必編輯代碼本身。這個例子的想法不起作用,我想知道是否有錯誤或者不使用字符串的方式。在if語句中使用字符串作爲變量子句
謝謝。
private String boundaries = "(x > 750) & (x < 900)";
if (boundaries) {
//Do stuff
}
我希望能夠使用字符串作爲if子句中的變量,然後獨立更改字符串而不必編輯代碼本身。這個例子的想法不起作用,我想知道是否有錯誤或者不使用字符串的方式。在if語句中使用字符串作爲變量子句
謝謝。
Java是不是動態編譯的語言,所以如果你想evaaluate這樣的表達,你可以從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
+1你需要在任何地方定義一個綁定到'x'嗎? –
+1:參考:http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html?utm_source=twitterfeed&utm_medium=twitter –
您需要通過engine.eval定義x 。 (見編輯) –
在這個意義上,Java不是一個動態編譯的語言。
你可以做的是使用beanshell在運行時編譯代碼,或使用JavaScript框架來實現表達式。
在Java中,最簡單的辦法是做
int min = Integer.parseInt(minAsString);
int max = Integer.parseInt(maxAsString);
if (x > min && x < max) {
// do stuff
}
http://stackoverflow.com/questions/935175/convert-string-to-code – Ogen
什麼是你想要做什麼?我的意思是,你想解決什麼問題?回答這個問題可能比較簡單,而不是你所問的。 – Darkhogg
@Clay沒有看到,謝謝。 – user3144201