可能重复:
Is there a java equivalent of the python eval function?
有一个字符串,类似于String str = "if a[0]=1 & a[1]=2"
。如何在真正的IF THEN表达式中使用此字符串? E.g:
for (Integer[] a : myNumbers) {
if a[0]=1 & a[1]=2 { // Here I'd like to use the expression from str
//...
}
}
答案 0 :(得分:4)
Java不是支持动态评估的脚本语言(尽管它支持脚本执行)。我会挑战你,检查一下你正在尝试做的是在Java中以正确的方式完成。
有两种常见的方法可以解决这个问题,如下所示。但是,当涉及到应用程序的运行时,它们会对性能产生重大影响。
脚本执行
您可以启动ScriptEngine,构建ScriptContext,以Javascript或其他语言执行片段,然后阅读评估结果。
<强>解析强>
您可以构建一个词法分析器,分析字符串并将其转换为您要执行的操作。在Java中,我建议你看一下JFlex。
答案 1 :(得分:0)
我认为你不能做你所要求的。
此外,你的java似乎没有多大意义。这样的事情会更有意义:
for (Integer a : myNumbers) {
if (a.equals(Integer.valueOf(1))){
//...
}
}
但你可以说:
if("hello".equals("world")){
//...
}
你可以建立一个字符串:
String str = "if "+a[0]+"=1 & "+a[1]+"=2"
你可以把它放在一起然后说:
String str = "if "+a[0]+"=1 & "+a[1]+"=2"
if(str.equals("if 1=1 & 2=2")){
//...
}
但我认为你可能只是想以错误的方式做某事