सभी अच्छे जवाब यहाँ। मैं इंटरफ़ेस में स्थिर फ़ंक्शन का एक और व्यावहारिक उपयोग जोड़ना चाहूंगा। टिप पुस्तक से आ रही है - प्रभावी जावा, अध्याय 2 में जोशुआ बलोच द्वारा तीसरा संस्करण: ऑब्जेक्ट बनाना और नष्ट करना।
Static functions can be used for static factory methods.
स्थैतिक कारखाना विधि वे विधियाँ हैं जो किसी वस्तु को वापस करती हैं। वे कंस्ट्रक्टर की तरह काम करते हैं। विशिष्ट मामलों में, स्थिर फैक्ट्री विधि कंस्ट्रक्टर का उपयोग करने की तुलना में अधिक पठनीय कोड प्रदान करती है।
किताब से उद्धरण - प्रभावी जावा, जोशुआ बलोच द्वारा तीसरा संस्करण
जावा 8 से पहले, इंटरफेस में स्थिर तरीके नहीं हो सकते थे। अधिवेशन के द्वारा, प्रकार नाम के एक इंटरफेस के लिए स्थिर कारखाने के तरीकों को गैर-परिवर्तनीय साथी वर्ग (आइटम 4) में टाइप नाम दिया गया था।
लेखक कलेक्शंस का उदाहरण देता है जहां इस तरह की स्टैटिक फैक्ट्री पद्धति लागू की जाती है। कोड की जाँच करते हुए, जोश बलोच को कलेक्शंस क्लास के पहले लेखक के रूप में देखा जा सकता है। यद्यपि संग्रह एक वर्ग है और इंटरफ़ेस नहीं है। लेकिन अवधारणा अभी भी लागू होती है।
उदाहरण के लिए, जावा कलेक्शंस फ्रेमवर्क में अपने इंटरफेस के पैंतालीस उपयोगिता कार्यान्वयन हैं, जो असम्बद्ध संग्रह, सिंक्रनाइज़ संग्रह और समान प्रदान करते हैं। इन सभी कार्यान्वयनों को एक गैर-परिवर्तनीय वर्ग (java.util.Collections) में स्थिर कारखाने विधियों के माध्यम से निर्यात किया जाता है। लौटी हुई वस्तुओं के वर्ग सभी गैर गणतंत्र हैं।
इसके अलावा वह बताते हैं कि एपीआई केवल छोटा नहीं है, यह कोड पठनीयता और एपीआई आसानी के साथ मदद करता है।
यह केवल एपीआई का बड़ा हिस्सा नहीं है, बल्कि वैचारिक भार है: उन अवधारणाओं की संख्या और कठिनाई जो एपीआई का उपयोग करने के लिए प्रोग्रामर को मास्टर करना चाहिए। प्रोग्रामर जानता है कि लौटी हुई वस्तु में ठीक इसके इंटरफ़ेस द्वारा निर्दिष्ट एपीआई है, इसलिए कार्यान्वयन वर्ग के लिए अतिरिक्त वर्ग प्रलेखन को पढ़ने की आवश्यकता नहीं है।
यहाँ java.util.Collections वर्ग से एक स्थिर विधि है:
public static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) {
return new UnmodifiableCollection<>(c);
}