如何检查输入是否符合Java中的任意数量的规则?

时间:2015-11-29 16:48:34

标签: java parsing filtering validating

对于我的具体任务,我试图检查一个单词是否属于一组特定的词性。这可以这样做:

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

然而,正如您所看到的那样,它很快变得丑陋且难以扩展。 如果我根据一组20条规则测试这些字符串,那么应该有一种更清晰,更具伸缩性的方法来实现这一目标。

有关如何在缩放时使代码更清晰,更好的想法吗?

1 个答案:

答案 0 :(得分: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.