以下是我正在创建的string
表达式的示例,然后我想在if
语句的条件下使用它。
public static String dynamicIf(String a, String b, String c){
String expression = "";
String[] list = {"one", "two", ""};
if(!a.equals(""))
expression += "a.equals(list[0])";
if(!b.equals(""))
{
if(!expression.equals(""))
expression += " && b.equals(list[1])";
else
expression += "b.equals(list[1])";
}
if(!c.equals(""))
{
if(!expression.equals(""))
expression += " && c.equals(list[2])";
else
expression += "c.equals(list[2])";
}
//String[] splitExpression = expression.split(" && ");
return expression;
}
所以上面的函数创建了一个字符串,我想在if
语句的条件下使用它。运行这些参数的方法的结果:
dynamicIf("one","two","");
是
a.equals(list[0]) && b.equals(list[1])
如何在字符串中使用此表达式在if
的条件下运行?
我希望你明白。谢谢。
答案 0 :(得分:1)
您无法在Java中执行此操作,因为它不是解释性语言。相反,重新设计您的代码。这样的事情可能会让你走上正轨:
public static boolean dynamicIf(String a, String b, String c) {
final String[] list = {"one", "two", ""};
boolean value = true;
if (!a.isEmpty()) {
value &= a.equals(list[0]);
}
if(!b.isEmpty()) {
value &= b.equals(list[1]);
}
if (!c.isEmpty()) {
value &= c.equals(list[2]);
}
return value;
}
这应该会给你相同的结果。例如:
if (dynamicIf("one", "two", "")) // true
if (dynamicIf("", "two", "")) // true
if (dynamicIf("", "", "")) // true
if (dynamicIf("one", "two", "three")) // false
编辑:这可能是也可能不是您要找的。你留下了一个评论,为问题增加了更多的背景,让我不这么认为,但你想要的最终结果仍然不清楚。