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

How to check whether an input conforms to an arbitrary amount of rules in Java?

对于我的特定任务,我正在尝试检查一个词是否属于一组指定的词性。可以这样做:

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

但是,如您所见,它很快就会变得丑陋且难以扩展。 如果我要根据一组 20 条规则测试这些字符串,应该有一种更简洁、更具可扩展性的方法来执行此操作。

关于如何在扩展时让我的代码更干净、更好的想法?

当然有。您可以构造(或传入)一个 List<<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html" rel="nofollow">Predicate</a><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.