动态If来自String表达式的条件

时间:2014-12-10 04:59:25

标签: java if-statement dynamic

以下是我正在创建的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的条件下运行? 我希望你明白。谢谢。

1 个答案:

答案 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

编辑:这可能是也可能不是您要找的。你留下了一个评论,为问题增加了更多的背景,让我不这么认为,但你想要的最终结果仍然不清楚。