我有一个程序,用于分析文本的某些属性。代码的基本结构对于所有属性都是相同的,只有一行不同:webDataField.containsAttributeXYZ();
,如下所示:
for (int index = 0; index < fields.size(); index++) {
WebDataField webDataField = fields.get(index);
boolean expectedCondition = webDataField.containsAttributeXYZ(); // Varies at this line..
Double score = evaluateBooleanCondition(actualCondition, expectedCondition);
WebDataFields fieldName = webDataField.getFieldName();
...
}
我希望能够避免重复编写同样的代码,因此想要只编写一次主体代码,然后将条件(其评估结果为真或假)传递给方法。
我对Java Predicate不是很了解,但如果我理解正确,这正是Java中谓词的作用。
这是否意味着我需要为每个条件编写自己的类,然后使该类实现Predicate接口?
如果是这样,那么之前声明在包含类似函数的类中的函数需要转换为以下内容:
class ContainsAttributeXYZ implements Predicate<Boolean>
这会导致代码变得混乱,并触发程序中类的数量大幅增加(因为每个函数都需要转换为一个类)。
或者我对Java中的谓词工作方式有什么误解吗?还有其他方法可以实现这个功能吗?
谢谢。
Predicate
不需要声明为一个类。例如,Predicate<String> p = (String s) -> s.length() > 5;
就可以了。 - bradimus