如何检查输入是否符合 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.
对于我的特定任务,我正在尝试检查一个词是否属于一组指定的词性。可以这样做:
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.