Программное изменение логических выражений

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

Есть класс, в котором множество условий проверяются на истину/ложь. Необходимо через интерфейс программы добавлять/изменять/удалять эти условия. Условия следующего вида

if(A[i] > 0 && (B[i+1] == 0 || C[i-4] <= 2))
    uu += "message";

Как реализовал. Новое условие вводится пользователем в формате условие;описание;сообщение и сохраняется в файл. Далее при помощи регулярных выражений и замены условия приводятся к такому виду

1 > 0 && (2 == 0 || 3 <= 2)

Затем, используя библиотеку EvalEx получал истину или ложь. Всё работает, но время обработки данных увеличилось в десятки раз по сравнению с тем когда условия хранились только в классе. Так как данных проверяется очень много, такой способ не подходит.

Есть ли возможность изменять исходный код класса программно так, чтобы это работало на android? Есть ли другие варианты?

Ответы

▲ 3

А вы уверены что вам нужно именно изменение класса? Может для ваших целей стоит воспользоваться паттерном спецификация?