समर्थन कोड उत्पादन एक भाषा के स्तर पर नहीं है, लेकिन भाषा कोई परेशानी के बिना उन्हें बनाने के लिए पर्याप्त सुविधाएं प्रदान करता है।
public class Singleton {
private static final Singleton instance = new Singleton();
// Private constructor prevents instantiation from other classes
private Singleton() {}
public static Singleton getInstance() {
return instance;
}
}
यह विकिपीडिया, जो बताते हैं कि कैसे एक सिंगलटन बनाया जा सकता है से एक उदाहरण है:
निम्नलिखित कोड पर विचार करें। एक निजी क्षेत्र में एक उदाहरण रखा जाता है, कन्स्ट्रक्टर कक्षा के बाहर पहुंच योग्य नहीं है, विधि इस एकल उदाहरण को वापस लाती है।
निर्माताओं के लिए के रूप में: डिफ़ॉल्ट रूप से हर वर्ग एक तथाकथित डिफ़ॉल्ट निर्माता जो कोई तर्क सुपर क्लास का कोई-args निर्माता कॉल लेता है और बस है। यदि सुपरक्लास के पास तर्क के बिना कोई सुलभ कन्स्ट्रक्टर नहीं है, तो आपको एक स्पष्ट कन्स्ट्रक्टर लिखना होगा।
तो एक वर्ग में एक कन्स्ट्रक्टर होना चाहिए, लेकिन अगर आपको सुपरक्लास के पास कोई तर्क नहीं है तो आपको इसे लिखना नहीं है।
public final class Foo {
private Foo() {} // Actually, Foo doesn't have constructor at all
// It can be represented in bytecode,
// but it cannot be represented in Java language
public static final void bar() {
Foo$.MODULE$.bar();
}
}
public final class Foo$ implements ScalaObject {
public static final Foo$ MODULE$;
static {
new Foo$();
}
private Foo$() { MODULE$ = this; }
public final void bar() {
// actual implementation of bar()
}
}
यहाँ Foo$
, एक सिंगलटन का एक वास्तविक कार्यान्वयन है जबकि Foo
जावा के साथ बातचीत के लिए एक तरीका प्रदान करता है static
:
आह:
इस प्रश्न देखें। – Jus12