如何在java中评估自定义条件

问题描述 投票:0回答:1

我想用Java做一个条件评估器,它的工作原理如下。

class ConditionEvaluator{
    String condition;
    ConditionEvaluator(String condition){
        this.condition = condition;
    }
    boolean isTrue(){
        /*
        * Code here
        */
    }
}

public static void main(String[] args){
    ConditionEvaluator c1 = new ConditionEvaluator("1==1");
    ConditionEvaluator c2 = new ConditionEvaluator("  \"hi\".equals(\"hi\")    ");
    ConditionEvaluator c3 = new ConditionEvaluator("3==4");
    System.out.print(c1.isTrue(),c2.isTrue(),c3.isTrue());
}

输出应该是:

true true false
java spring conditional-statements eval
1个回答
0
投票

好吧,我希望你在教学中需要它,而不是在生产环境中使用它(如果你这样做,我建议你学习使用StackDeque数据结构解析字符串)。最粗略的方法是如何达到你的目的。

public class ConditionEvaluator {

    private String expression;

    public ConditionEvaluator(String expression) {
        this.expression = expression;
    }

    public boolean isTrue() throws Exception {
        if (expression.contains("==")) {
            return parseTwoEquals();
        } else if (expression.contains(".equals")) {
            return parseEquals();
        } else throw new Exception();

    }

    private boolean parseTwoEquals() throws Exception {
        String[] args = expression.split("==");
        if (args.length == 2) {
            return args[0].trim().equals(args[1].trim());
        } else throw new Exception();
    }

    private boolean parseEquals() throws Exception {
        String s = expression.replace("\"", "").replace("(", "").replace(")","");
        String[] split = s.split(".equals");
        if (split.length == 2) {
            return split[0].trim().equals(split[1].trim());
        } else throw new Exception();
    }
}

我相信你可以自己创造异常的类型.

© www.soinside.com 2019 - 2024. All rights reserved.