Проверить условие, хранимое в файле или переменной типа String

Рейтинг: 1Ответов: 2Опубликовано: 05.03.2015

Появилась необходимость хранить условия вида B>0 && C<2 в текстовом файле.
Затем эти условия программа должна проверить на валидность и выполнить определённую операцию.
Сам текст могу записать в переменную типа String. А как проверить условие на валидность?

String s = "B>0 && C<2";
if(*значение s*)
    a = 0;
else
    a = 1;

Ответы

▲ 1Принят

Я бы свел задачу к наиболее общему виду. Допустим, нам надо анализировать три переменные. Условие B > 0 эквивалентно принадлежности множеству (0; +oo). Условие C < 2 эквивалентно (-oo; 2). Относительно A условий нет, что эквивалентно принадлежности множеству (-oo; +oo). Запишем эти условия как шесть чисел: -2000000000 +2000000000 0 2000000000 -2000000000 2

▲ 2

Простого способа сделать это на Java нет. Либо вы пишите свой парсер и интерпретатор подобных выражений (раз, два, три), либо прикручиваете готовый парсер (например Rhino - движок JavaScript для Java, или Spring Expression Language), либо пересматриваете архитектуру вашего приложения таким образом, чтобы необходимость в интерпретации произвольных выражений отпала.