Как проверить, соответствует ли ввод произвольному количеству правил в Java?

Для своей конкретной задачи я пытаюсь проверить, попадает ли слово в указанный набор частей речи. Это можно сделать так:

private boolean validate(String word) {
    if (isNoun(word) || isVerb(word) || isParticiple(word) || ... )
        return true;
    else
        return false;
}

Однако, как вы можете видеть, это быстро становится уродливым и трудно масштабируемым. Если я тестирую эти строки в соответствии с набором из 20 правил, должен быть более чистый и более масштабируемый способ сделать это.

Есть мысли о том, как сделать мой код чище и лучше при масштабировании?

1 ответ

Решение

Там точно есть. Вы можете построить (или передать) List< Predicate<String>>и затем пройдитесь по нему так:

// rules being the predicate list
boolean valid = true;
for (Predicate<> rule : rules) {
    valid = valid && rule.test(word);
}
// At the end of this valid will only remain true if all of the rules pass.
Другие вопросы по тегам