Я хотел бы быть в состоянии оценить в логическое выражение, хранящуюся в виде строки, как следующее:Могу ли я строго оценить булевское выражение, хранящееся как строка в Java?
"hello" == "goodbye" && 100 < 101
Я знаю, что есть тонны вопросов, как это на SO уже, но я задаю этот один потому что я попробовал самый общий ответ на этот вопрос, BeanShell, и это позволяет для оценки утверждений как этого
"hello" == 100
без каких-либо проблем на всех. Кто-нибудь знает о парсере FOSS, который создает ошибки для таких вещей, как несоответствие операндов? Или есть установка в BeanShell, которая поможет мне? Я уже пробовал Interpreter.setStrictJava (true).
Для полноты, вот код, который я использую в настоящее время:
Interpreter interpreter = new Interpreter();
interpreter.setStrictJava(true);
String testableCondition = "100 == \"hello\"";
try {
interpreter.eval("boolean result = ("+ testableCondition + ")");
System.out.println("result: "+interpreter.get("result"));
if(interpreter.get("result") == null){
throw new ValidationFailure("Result was null");
}
} catch (EvalError e) {
e.printStackTrace();
throw new ValidationFailure("Eval error while parsing the condition");
}
Edit:
код у меня в данный момент возвращает этот вывод
result: false
без ошибок , Я бы хотел, чтобы это выбросило EvalError или что-то, давая мне знать, что были несогласованные операнды.
В чем проблема с кодом, который вы используете? –
«Кто-нибудь знает о парсере FOSS» == вне темы вопрос – Raedwald