यह ओवरराइड नहीं है। अगर यह काम करता है, तो this.toString()
Arrays.toString
के बजाय A
की विधि तक पहुंच जाएगा, अगर ओवरराइडिंग होने पर मामला होगा।
language specification बताते हैं कि स्थिर आयात केवल static
तरीके और प्रकार के संकल्प को प्रभावित:
पैकेज पी का एक संकलन इकाई ग में एक एकल स्थैतिक आयात घोषणा घ है कि एक क्षेत्र छाया n नामित आयात करता है सी में एक स्थैतिक आयात पर ऑन-डिमांड घोषणा द्वारा आयातित किसी भी स्थैतिक क्षेत्र की घोषणा, पूरे सी।
पैकेज पी का एक संकलन इकाई ग में एक एकल स्थैतिक आयात घोषणा घ कि एक विधि नामित n हस्ताक्षर रों छाया के साथ की घोषणा हस्ताक्षर रों आयातित के साथ किसी भी स्थिर विधि नामित n आयात करता है एक स्थिर-आयात द्वारा सी में मांग की घोषणा, पूरे सी।
पैकेज पी का एक संकलन इकाई ग में एक एकल स्थैतिक आयात घोषणा घ कि एक प्रकार n नामित की घोषणाओं छाया का आयात करता है:
- किसी भी स्थिर प्रकार एक स्थिर आयात द्वारा n नामित आयातित सी में मांग की घोषणा
- कोई शीर्ष स्तर का प्रकार (§7.6) नामित एक अन्य संकलन इकाई (§7.3) पी में घोषित किया गया।
- कोई टाइप नाम एन सी में आयात-पर-मांग घोषणा (§7.5.2) द्वारा आयात किया गया। पूरे सी।
स्थिर आयात गैर स्थैतिक तरीकों या आंतरिक प्रकारों को छाया नहीं देते हैं।
तो toString
गैर स्थैतिक विधि को छाया नहीं करता है। चूंकि नाम toString
A
की गैर-स्थैतिक विधि का संदर्भ ले सकता है, यह Arrays
की विधि का संदर्भ नहीं दे सकता है और इस प्रकार toString
toString
नामक एकमात्र विधि से बांधता है जो दायरे में उपलब्ध है, जो String toString()
है। वह विधि कोई तर्क नहीं ले सकती है ताकि आपको संकलन त्रुटि मिल सके।
Section 15.12.1 विधि संकल्प बताते हैं और पूरी तरह से static
तरीकों लेकिन अंदर नहीं member
तरीकों भीतर अनुपलब्ध विधि के नाम की छाया अनुमति देने के लिए फिर से लिखा गया है करने के लिए होगा।
मेरा अनुमान है कि भाषा डिजाइनर विधि संकल्प नियमों को सरल रखना चाहते थे, जिसका अर्थ है कि वही नाम एक ही बात है जिसका अर्थ है कि यह static
विधि में दिखाई देता है या नहीं, और केवल एक ही चीज जो बदलती है।
स्रोत
2012-01-23 13:25:20
ऐसा लगता है कि यह अपने सुपर ऑब्जेक्ट के 'टूस्ट्रिंग() ' –
आईएमएचओ का जिक्र कर रहा है, पूरी स्थैतिक आयात कार्यक्षमता एक खराब अवधारणा है, प्रदूषण नामस्थान और गड़बड़ी कोड पठनीयता। आलसी मत बनो, स्थिर कार्य के संलग्न वर्ग/इंटरफ़ेस को टाइप करना बहुत कठिन नहीं है, हमारे पास इसके लिए आईडीई हैं। स्थिर आयात का उपयोग करने से बचने की कोशिश करें। – buc
@ जिगर जोशी, यह ऐसा लगता है। लेकिन मुझे इसके बारे में कुछ भी नहीं मिला। और अधिक, हम स्थिर संदर्भ से 'Object.toString' को कॉल नहीं कर सकते हैं इसलिए मुझे इस व्यवहार में कोई तर्क नहीं दिख रहा है। –