下面是我正在创建的 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
的条件下运行?
我希望你明白。谢谢。
最佳答案
您无法在 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
编辑:这可能是也可能不是您正在寻找的内容。您留下的评论为问题添加了更多背景,让我有不同的想法,但您想要的最终结果仍然不清楚。
关于java - 来自字符串表达式的动态 If 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27393619/