-4

这是我需要做的:

    public void verifyConditionSatisfies( Boolean condition){
  
                if (condition) {
                    System.out.println(condition.toString()+ "satisfies)//This is the part i need to get its String binding, not boolean evaluated version
                }else{
                    System.out.println(condition.toString()+ " does not satisfy)
                }

    }

这是一个预期的用法:

verifyConditionSatisfies(10>9)

应评估为

"10>9 satisfies"
4

2 回答 2

2

正如评论中提到的,将布尔表达式10>9作为字符串是不可能的。将表达式作为字符串提供"10>9"可能更容易做到。

这是一种非正统的方法:

public class BooleanEval {
    public static void main(String[] args) throws ScriptException {
        System.out.println(new BooleanEvaluation("10>9"));
        System.out.println(new BooleanEvaluation("25<3"));
    }

    public static class BooleanEvaluation {
        private static final ScriptEngine javaScriptEngine = new ScriptEngineManager().getEngineByName("JavaScript");
        private String expression;
        private boolean evaluation;

        public BooleanEvaluation(String eval) throws ScriptException {
            this.expression = eval;
            this.evaluation = Boolean.parseBoolean(String.valueOf(javaScriptEngine.eval(expression)));
        }

        @Override
        public String toString() {
            String evalString = evaluation ? "satisfies" : "does not satisfy";
            return expression + " " + evalString;
        }
    }
}

输出:

10>9 satisfies
25<3 does not satisfy
于 2020-08-14T12:37:55.977 回答
0

这个

  verifyConditionSatisfies(10>9);

被有效地评估为

  Boolean temp = 10 > 9;
  verifyConditionSatisfies(temp);

该方法不知道它的参数是如何计算的。字符序列 1、0、>、9 仅存在于源代码中。

所以,答案是“不”。

于 2020-08-14T12:20:57.260 回答