2012-10-17 12 views
6

प्रदर्शन के संदर्भ में javax.swing.JFrame विस्तार करते समय setTitle("Title") या super("Title") के साथ शीर्षक सेट करने की अनुशंसित विधि क्या है?सुपर या बस सेटटाइट के साथ सुपरक्लास कन्स्ट्रक्टर को कॉल करना?

+1

'जेएफआरएएम' का विस्तार न करें, बस एक उदाहरण का उपयोग करें। लेकिन किसी भी तरह से, आप इस तथ्य के लिए कन्स्ट्रक्टर में शीर्षक भी पारित कर सकते हैं कि यह एक उदाहरण बनाने/कॉन्फ़िगर करने के लिए कम कोड लाइन है। यह भी देखें [कब अनुकूलित करें] (http://en.wikipedia.org/wiki/Program_optimization#When_to_optimize)। –

+5

* प्रदर्शन *? आप कितने जेएफआरम्स बनाना चाहते हैं? लाखों एक सेकंड? –

उत्तर

4

आप JFrame (OpenJDK 6-b14 में) grepcode हैं, और थोड़ा खुदाई, आप देखते हैं कि निर्माता JFrame() निर्माता Frame() कहता है, जो कहता है Frame("") (link)।

इसलिए, अगर आप किसी भी सुपर कन्स्ट्रक्टर को कॉल निर्दिष्ट नहीं करते हैं तो एक अंतर्निहित super() जोड़ा जाता है, तो यह super("Title") पर कॉल करने के लिए अधिक प्रभावी होगा (हालांकि बहुत थोड़ा)।

0

जब आप कक्षा का विस्तार करते हैं तो हमेशा संबंधित सुपर (.....) को कॉल करना एक अच्छा अभ्यास है। जैसा कि आप कभी नहीं जानते कि सुपर कन्स्ट्रक्टर दृश्य के पीछे क्या जादू करता है।

तुम बस

कॉल सुपर जरूरत कभी नहीं();

यदि आप कुछ और निर्दिष्ट नहीं करते हैं तो यही होगा। आप केवल कॉल करने के लिए करता है, तो निर्माता निर्दिष्ट करना होगा:

  • तुम एक सुपर क्लास निर्माता जो मापदंडों
  • आप सुपर क्लास निर्माता के बजाय एक ही कक्षा में एक और निर्माता के लिए श्रृंखला के लिए चाहते है कॉल करना चाहते हैं
+0

क्या आप कक्षा का विस्तार करते समय स्पष्ट रूप से 'सुपर' को कॉल करना चाहते हैं? यदि ऐसा है तो क्यों? क्योंकि जब आप कक्षा को विस्तार से या स्पष्ट रूप से बढ़ाते हैं तो आप 'सुपर' कहते हैं? – emory

+0

मैंने थोड़ा जवाब देने के लिए अपना जवाब संपादित किया – Frank

1

यदि आप अपने कन्स्ट्रक्टर में हैं, तो सुपर कन्स्ट्रक्टर को यथासंभव अधिक कार्यक्षमता देने का प्रयास करें। यह संभव है कि आप इसे कुछ काम करने से बचा सकें।

उदाहरण के लिए, डिफ़ॉल्ट सुपर कन्स्ट्रक्टर कुछ आंतरिक ऑब्जेक्ट्स बना सकता है जो सेटर को कॉल करते समय ओवरराइट हो जाएंगे। यदि आप तुरंत सही डेटा पास करते हैं, तो आप इसे अधिक कुशल होने का मौका देते हैं।

लेकिन मुझे लगता है कि इस विशिष्ट मामले में, इससे कोई फर्क नहीं पड़ता।

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