java - 来自字符串表达式的动态 If 条件

标签 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 的条件下运行? 我希望你明白。谢谢。

最佳答案

您无法在 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/

相关文章:

c# - 如何将匿名类型传递给函数,然后获取值

javascript - 在 MainActivity.java React-native Android 中找不到符号

java - 如何在Java中单击JLabel时更改JLabel背景

java - redis 中总是需要 protobuf 吗?

c# - 条件运算符慢吗?

batch-file - BATCH 文件中多个文件名的条件 IF EXIST 语句

c++ - 通过 DP 打印 mXn 矩阵从左上角到右下角的所有可能路径

java - 为什么此错误消息与另一个消息一起出现?

excel - VBA 在 If 语句中采用错误的分支 - 严重的编译器错误?

asp.net - 无法加载 View 状态。正在加载 View 状态的控制树必须与用于保存 View 状态的控制树匹配