यह देखते हुए कि मेरे पास एक क्लास बेस है जिसमें टेक्स्ट बॉक्स ऑब्जेक्ट के साथ एकल तर्क निर्माता है जैसा कि यह तर्क है। यदि मेरे पास निम्न फ़ॉर्म का एक वर्ग सरल है:
public class Simple extends Base {
public Simple(){
TextBox t = new TextBox();
super(t);
//wouldn't it be nice if I could do things with t down here?
}
}
मुझे यह बताने में एक त्रुटि मिलेगी कि सुपर टू कॉल एक निर्माता में पहला कॉल होना चाहिए। हालांकि, अजीब तरह से पर्याप्त है, मैं यह कर सकता हूं।
public class Simple extends Base {
public Simple(){
super(new TextBox());
}
}
ऐसा क्यों है कि यह अनुमति है, लेकिन पहला उदाहरण नहीं है? मैं समझ सकता हूं कि पहले उपवर्ग को सेटअप करने की आवश्यकता है, और शायद सुपर-कंस्ट्रक्टर को कॉल करने से पहले ऑब्जेक्ट चर को तत्काल करने की अनुमति नहीं है। लेकिन टी स्पष्ट रूप से एक विधि (स्थानीय) चर है, इसलिए इसे अनुमति क्यों नहीं दी जाती है?
क्या इस सीमा के आसपास आने का कोई रास्ता है? क्या उन चीज़ों के लिए चर रखने का एक अच्छा और सुरक्षित तरीका है जो आप सुपर कॉलिंग से पहले बना सकते हैं, लेकिन क्या आपने कंस्ट्रक्टर में प्रवेश किया है? या, अधिक उदारता से, सुपर से पहले गणना करने की अनुमति वास्तव में कहा जाता है, लेकिन निर्माणकर्ता के भीतर?
धन्यवाद।