2012-05-18 18 views
6

मैं जानना चाहता हूं इसका क्या अर्थ है?जावा यह (शून्य)

public Settings() { 
    this(null); 
} 

उपरोक्त कोड कक्षा "सेटिंग्स" का निर्माता है। यह (शून्य) का अर्थ यहां क्या है?

+0

अधिक संदर्भ की आवश्यकता है। क्या वह कक्षा परिभाषा में है? –

+1

संभावित डुप्लिकेट [किस प्रकार के जावा कन्स्ट्रक्टर ये हैं? कन्स्ट्रक्टर चेनिंग?] (Http://stackoverflow.com/questions/9204560/what-type-of-java-constructors-are-these-constructor-chaining) –

+0

संभावित डुप्लिकेट [मैं जावा में किसी अन्य से एक कन्स्ट्रक्टर को कैसे कॉल करूं? ?] (http://stackoverflow.com/questions/285177/how-do-i-call-one-constructor-from-another-in-java) –

उत्तर

12
public Settings() { 
    this(null); //this is calling the next constructor 
} 
public Settings(Object o) { 
// this one 
} 

इस बार मूलभूत मूल्यों पारित करने के लिए प्रयोग किया जाता है फोन ताकि आप एक निर्माता या किसी अन्य उपयोग करने के लिए तय कर सकते हैं ..

public Person() { 
    this("Name"); 
} 
public Person(String name) { 
    this(name,20) 
} 
public Person(String name, int age) { 
    //... 
} 
+0

धन्यवाद। उदाहरण वास्तव में मदद की! –

+0

आपका स्वागत है (: – porfiriopartida

4

यह एक ऐसा निर्माता है जो एक ही कक्षा में एक और निर्माता को बुला रहा है।

आप शायद कुछ इस तरह है:

public class Settings { 
    public Settings() { 
     this(null); // <-- This is calling the constructor below 
    } 

    public Settings(object someValue) { 
    } 
} 

अक्सर इस पद्धति प्रयोग किया जाता है, ताकि आप (कॉल द्वारा उपयोग में आसानी के लिए) कम मानकों के साथ एक निर्माता की पेशकश कर सकते, लेकिन अभी भी तर्क में समाहित रखने के जगह (कन्स्ट्रक्टर कहा जा रहा है)।

4

यह सेटिंग क्लास के अंदर एक अलग कन्स्ट्रक्टर को कॉल कर रहा है। एक और नियंत्रक की तलाश करें जो एक पैरामीटर स्वीकार करता है।

10

इसका मतलब है कि आप एक ओवरलोडेड कन्स्ट्रक्टर को कॉल कर रहे हैं जो किसी प्रकार के Object लेता है लेकिन आप ऑब्जेक्ट पास नहीं करते हैं, लेकिन एक सादा null

+0

क्या वह विरासत वाले कन्स्ट्रक्टर को कॉल कर सकता है, या वह अलग दिखता है ? – ametren

+2

नहीं, अगर आप ऐसा करना चाहते हैं तो आपको 'सुपर (यह) ' –

+0

के साथ ऐसा करना है, ठीक है, आप अभिभावक कन्स्ट्रक्टर को सुपर के साथ कॉल कर सकते हैं, यदि सेटिंग्स एक वर्ग को विस्तारित करती है जो स्ट्रिंग को तर्क के रूप में प्राप्त करती है, आप सुपर ("somestring") – porfiriopartida

1

यह डिफ़ॉल्ट निर्माता तर्क के रूप में अशक्त गुजर ...

1

जावा में अतिभारित निर्माता पढ़ने की कोशिश करें और आप निर्माता जो केवल एक पैरामीटर है फोन ..

public Settings() { 
     this(null); 
    } 

    public Settings(Object obj){ 

} 
1

यह Java में Constructor Chaining कहा जाता है। इस कॉल से आप वास्तव में अपने वर्ग ऑब्जेक्ट के ओवरलोडेड कन्स्ट्रक्टर का आह्वान करते हैं। उदाहरण

class Employee extends Person { 
    public Employee() { 
     this("2") //Invoke Employee's overloaded constructor"; 
    } 

    public Employee(String s) { 
     System.out.println(s); 
    } 
} 
0

के लिए यह मूल रूप से उल्लेख किया है कि हर एक के रूप में एक ही कक्षा में एक और parameterised निर्माता कहता है।

यहां ध्यान देने योग्य एक बात है, यदि कोई पैरामीटरयुक्त कन्स्ट्रक्टर उपलब्ध नहीं है, तो यह एक त्रुटि उत्पन्न करेगा।

मुझे शून्य मान के साथ इस() को पारित करने का कोई उपयोग नहीं है। लेकिन किसी से पूछने के लिए एक मुश्किल सवाल हो सकता है। :)

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