मेरे पास एक ऐसा प्रोग्राम है जो कुछ विशेषताओं के लिए टेक्स्ट का विश्लेषण करता है। के रूप में यहाँ देखा webDataField.containsAttributeXYZ();
: कोड के बुनियादी ढांचे को ही सभी विशेषताओं के लिए यह केवल एक लाइन में बदलता है इसके बजाय प्रत्येक शर्त के लिए एक ही कोड लिखने (& अपने आप को कोड में दोहरा) कीजावा में भविष्यवाणी 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();
...
}
मैं था कोड के मुख्य भाग को एक बार लिखना और इस शर्त को शर्त (जो सत्य या गलत का मूल्यांकन करता है) पास करना पसंद है।
मैं Java Predicate
पर नया हूं लेकिन अगर मैं सही ढंग से समझता हूं तो यह वास्तव में जावा में भविष्यवाणी का कार्य है।
क्या यह मुझे अपनी स्थिति में प्रत्येक शर्त लिखने के लिए मजबूर करता है और फिर उस वर्ग को Predicate
इंटरफ़ेस लागू करने के लिए मजबूर करता है? इस कोड को गुमराह बनने के लिए कारण होगा
class ContainsAttributeXYZ implements Predicate<Boolean>
और एक बड़ा ट्रिगर किया:
यदि हां, तो समारोह (जो कि पहले एक वर्ग है कि समान कार्य शामिल हैं में घोषित किया जाता है) की तरह कुछ करने के लिए परिवर्तित किया जा करने की आवश्यकता होगी कार्यक्रम में कक्षाओं की संख्या में वृद्धि (जैसे प्रत्येक कार्य को कक्षा में परिवर्तित करने की आवश्यकता होती है)
या क्या मैंने जावा में काम करने के बारे में कुछ गलत समझा है? क्या ऐसा करने का कोई और तरीका है?
धन्यवाद
मुझे यकीन नहीं है कि आप क्या पूछ रहे हैं। एक 'भविष्यवाणी' को कक्षा के रूप में घोषित करने की आवश्यकता नहीं है। उदाहरण के लिए, ' पी = (स्ट्रिंग एस) -> एस। लम्बाई()> 5; 'करेंगे। –
bradimus
ए 'भविष्यवाणी' ज्यादा समझ में नहीं आता है। आप शायद 'भविष्यवाणी ' चाहते हैं। –
यह कैसे है कि आपने [लैम्ब्डा] टैग जोड़ा है, और फिर भी स्पष्ट रूप से यह नहीं पता कि वे क्या हैं? – 4castle