मैं सिर्फ Java 7 preview presentation (pdf) पढ़ रहा था और चेन आमंत्रण पर एक स्लाइड थी। यहाँ स्लाइड में प्रयोग किया जाता उदाहरण है:जावा 7 में जंजीर आविष्कार?
// Construction with setters
DrinkBuilder margarita = new DrinkBuilder();
margarita.add("tequila");
margarita.add("orange liqueur");
margarita.add("lime juice");
margarita.withRocks();
margarita.withSalt();
Drink drink = margarita.drink();
// Construction with chained invocation
Drink margarita = new DrinkBuilder()
.add("tequila")
.add("orange liqueur")
.add("lime juice")
.withRocks()
.withSalt()
.drink();
और मैं इस बारे में भावनाओं को मिलाया है। किसी को एक कथन में बहुत अधिक विधि आमंत्रण नहीं करना चाहिए। दूसरी ओर, margarita.this()
और margarita.that()
लिखना बहुत सुविधाजनक नहीं है।
अब, मैं डेल्फी दुनिया से जावा में आ रहा हूं। और डेल्फी में with
भाषा निर्माण है। यह कुछ लोगों द्वारा सराहना की जाती है और कई लोगों द्वारा लुप्त होती है (या यह दूसरी तरफ है?)। मुझे with
मिलते-जुलते आमंत्रण के विचार से अधिक सुरुचिपूर्ण होने के लिए मिलता है (जो मुझे लगता है कि void
विधि के आधार पर काम करता है जिस पर ऑब्जेक्ट किया गया है - और यह वह हिस्सा है जिसे मैं पसंद नहीं करता, क्योंकि void
वापस आना चाहिए कुछ भी नहीं)।
मैं with
भाषा सुविधा की सराहना करेंगे, जावा द्वारा अपनाया जा रहा तो उदाहरण के कोड इसलिए की तरह लिखा जा सकता है:
Drink margarita = null;
with (new DrinkBuilder()) {
add("tequila");
add("orange liqueur");
add("lime juice");
withRocks();
withSalt();
margarita = drink();
}
मेरे अलावा कोई और श्रृंखलित मंगलाचरण के लिए इस समाधान पसंद करेंगे हूँ? किसी और को लगता है कि with
जावा भाषा के लिए एक उपयोगी विस्तार हो सकता है? ("जावा ++" की आवश्यकता के बारे में किसी के प्रश्न के बारे में मुझे याद दिलाता है ...)
यह जावा 7 तक सीमित नहीं है, आप विधियों में "यह" वापस लौकर एक निर्माता लिख सकते हैं। एक अच्छा उदाहरण java.lang.StringBuilder है। –
मुझे लगता है कि बिंदु यह है कि जावा 7 इसे वापस किए बिना चेनिंग की अनुमति देता है, इसलिए विधि कॉल के अर्थशास्त्र को बदलना। – OregonGhost