2015-06-17 5 views
5

मान लीजिए कि मेरे पास class है जो implementsjava.util.function.Function है। Function को प्रारंभ तिथि और समाप्ति दिनांक के बारे में जानने की आवश्यकता है, लेकिन ये फ़ंक्शन के पूरे जीवनकाल में स्थिर रहेंगे।एक java.util.function में राज्य। समारोह

मैं, आरंभ और समाप्ति तिथि के लिए खेतों Functionprivate final साथ लागू करने के रूप में apply विधि प्रत्येक कॉल के लिए उनके लिए नए मूल्यों की आवश्यकता नहीं है पर विचार कर रहा हूँ। मुझे लगता है कि यह मेरे कार्यान्वयन को सरल बना देगा लेकिन चिंता करें कि यह पूरे कार्यात्मक प्रोग्रामिंग प्रतिमान के खिलाफ चला जाता है।

में अपरिवर्तनीय वर्ग के सदस्यों के लिए उचित है जब मान apply विधि द्वारा आवश्यक हैं लेकिन Function के पूरे जीवनकाल में निरंतर हैं?

+2

हां, इसके साथ कुछ भी गलत नहीं है। –

उत्तर

3

आपके दृष्टिकोण में कुछ भी गलत नहीं है।

मुझे लगता है कि यह मेरे कार्यान्वयन को सरल बना देगा लेकिन चिंता करें कि यह पूरे कार्यात्मक प्रोग्रामिंग प्रतिमान के खिलाफ चला जाता है।

इसे हल करने के लिए, आप एक विधि लागू कर सकते हैं, जो आपकी शुरुआत और समाप्ति तिथि प्राप्त करता है, और आपको एक फ़ंक्शन देता है। उदाहरण के लिए:

public static final Function<Object, Object> getDateF(final Date start, final Date end) { 
    return input -> { 
    // do something with start/end for your calculation 
    final Object output = null; 
    return output; 
    }; 
} 

ऑब्जेक्ट को जो भी आपको चाहिए उसे बदलें।

+2

मैं इसे रनटाइम पर जोड़ना चाहता हूं, यह उस ऑब्जेक्ट का मूल्यांकन करेगा जो 'फंक्शन' लागू करता है जिसमें रॉबर्ट्स सुझाव की तरह 'स्टार्ट' और 'एंड' के लिए दो फ़ील्ड होंगे। यह केवल छोटे और सुंदर में है। – Lii

+0

एक वर्ग की तरह कार्यान्वित 'फंक्शन' होने के कारण, प्रश्न में वर्णित एक, इसे उसमें थोड़ा खतरनाक बनाता है जहां फ़ंक्शन का उपयोग किया जाता है, इसे पहले से ही प्रारंभ किया जा चुका है और इसलिए प्रोग्रामर को यह नहीं पता है कि इसकी खेतों पर निर्भरता है 'लागू' में पारित किए गए लोगों के अलावा, जब तक वे प्रारंभिकरण नहीं पढ़ते। यह दृष्टिकोण उस मुद्दे के आसपास हो जाता है। –

संबंधित मुद्दे