我有一個程序可以分析某些屬性的文本。該代碼的基本結構是相同的所有屬性,它僅在一行變化:webDataField.containsAttributeXYZ();
如下所示:Java中的謂詞8
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();
...
}
而不是寫相同的代碼爲每個條件(&重複自己的代碼)我想喜歡一次性編寫代碼的主體,並將條件(評估爲true或false)傳遞給方法。
我是Java Predicate
的新手,但如果我理解正確,這正是Java中謂詞的功能。
這是否會迫使我在自己的類中編寫每個條件,然後讓該類實現Predicate
接口?
如果是的話,(這是在包含類似功能的一類先前聲明)的功能將需要轉換的東西,如:
class ContainsAttributeXYZ implements Predicate<Boolean>
這會導致代碼變得迷失方向,並引發大增加了程序中的班級數量(因爲每個功能都需要轉換成班級)
或者我誤解了Predicates在Java中的工作方式?有沒有另外一種方法呢?
感謝
我不確定你在問什麼。 「Predicate」不需要聲明爲一個類。例如,'Predicate p =(String s) - > s.length()> 5;'會做。 –
bradimus
'Predicate'沒有多大意義。您可能需要'Predicate '。 –
它是如何添加[lambda]標籤,但顯然不知道它們是什麼? – 4castle