2013-08-28 9 views
10

जावा उस विधि को बनाने की अनुमति देता है जिसमें कक्षा का नाम है और शून्य शून्य (शून्य कन्स्ट्रक्टर की तरह) टाइप करें। निर्माता के पास कोई प्रकार नहीं है और यह कन्स्ट्रक्टर का कार्य करता है। लेकिन क्या ऊपर उल्लिखित तरीकों का कोई उपयोग है। आप उन प्रयोगोंक्यों जावा उस विधि की अनुमति देता है जिसमें कक्षा का नाम और प्रकार शून्य

नमूना कोड का उदाहरण दे सकते हैं:

//my class 
class MyClass{ 

    //constructor 
    public MyClass(.....){ 
    } 

    //What is the use of the below method 
    public void MyClass(....){ 
    } 
} 
+0

इस हो सकता है आपके लिए http://stackoverflow.com/questions/3401444/methods-with-same-name- क्या देख: क्यों readibility मामलों

लिंक नीचे

आप मदद कर सकता है जाएगा कन्स्ट्रक्टर- –

+0

ए 'कन्स्ट्रक्टर' एक "विशेष" प्रकार का तरीका है। यह संकलक और भाषा द्वारा अलग तरीके से इलाज किया जाता है। यह स्पष्ट रूप से आपकी कक्षा का एक उदाहरण देता है (यानी 'सार्वजनिक MyClass MyClass (...) {...} '), इसलिए यह सामान्य विधि नामकरण प्रतिबंध से बच निकलता है। यह सब कहकर, यह [जावा नामकरण सम्मेलनों] का उल्लंघन करेगा (http://www.oracle.com/technetwork/java/codeconv-138413.html) ऊपरी केस कैरेक्टर से शुरू करने वाली विधि बनाने के लिए;) – MadProgrammer

+0

कन्स्ट्रक्टर बाइट कोड स्तर पर '' और 'void' का रिटर्न प्रकार का नाम है, इसलिए कोई संघर्ष नहीं है। स्थैतिक वर्ग प्रारंभकर्ता को '' –

उत्तर

10

अपने प्रश्न का उत्तर देने के लिए: नहीं, इसका कोई विशेष उपयोग नहीं है। वास्तव में, यह काउंटर अंतर्ज्ञानी और भ्रमित है। कुछ कंपाइलर भी एक चेतावनी उत्पन्न करेंगे "इस विधि में एक निर्माता का नाम है"

लेकिन तकनीकी रूप से यह संभव है कि संकलन त्रुटि नहीं है, तो मैं इससे दूर रहने की सलाह दूंगा। कई अलग-अलग विधि नाम हैं जो अधिक वर्णनात्मक हो सकते हैं और एक ही उद्देश्य की सेवा कर सकते हैं।

+2

कहा जाता है मुझे नहीं लगता कि सभी जावा कंपाइलर्स आपको इसके बारे में चेतावनी देंगे ... –

+0

यह एक सुरक्षित धारणा है। फिक्स्ड। – rocketboy

1

उपयोग किसी अन्य विधि के समान है। और वापसी प्रकार void नहीं होना चाहिए। यह अक्सर भ्रमित हो सकता है, लेकिन वर्ग नाम के समान तरीकों का नाम देना पूरी तरह कानूनी है। आप आमतौर पर अधिक भ्रम पैदा कर सकते हैं, लेकिन यह एक कानूनी व्यवहार है। विधियों के पास किसी भी अन्य वर्ग विधि के अलावा कोई विशेष गुण नहीं है।

2

हां, जावा के लिए एक फ्रेशर इससे भ्रमित हो सकता है। कन्स्ट्रक्टर के पास रिटर्न टाइप नहीं हो सकता है। लेकिन कुछ लोग गलत समझते हैं कि "कोई वापसी प्रकार" और "शून्य" कुछ समान नहीं हैं लेकिन यह नहीं है। कन्स्ट्रक्टर एक अलग कहानी है और जिस विधि में कक्षा का नाम है और कोई अन्य रिटर्न प्रकार (शून्य, स्ट्रिंग, int, .......) अलग है। लेकिन यह अधिक भ्रमित है।

2

कोई विधि नहीं है समझदार एक विधि के लिए उपयोग उन नाम वर्ग नाम के समान है।

  • यह एक शैली उल्लंघन है। आधिकारिक जावा स्टाइल गाइड के अनुसार, जावा विधियों के नाम कम केस अक्षर से शुरू होना चाहिए।

  • यह भ्रमित है क्योंकि यह एक कन्स्ट्रक्टर की तरह सतही रूप से दिखता है।

  • यह भ्रमित है क्योंकि जब आप ऐसी विधि का उपयोग करते हैं तो ऐसा लगता है कि आप कक्षा नाम का गलत इस्तेमाल कर रहे हैं।

  • यह संभव है कि इससे क्लास-नाम बनाम विधि-नाम अस्पष्टता के कारण अप्रत्याशित व्यवहार और/या अप्रत्याशित संकलन त्रुटियां हो जाएंगी।


क्यों जावा विधि है कि वर्ग का नाम और प्रकार शून्य अनुमति देता है?

मूल रूप से जावा भाषा पहचानकर्ता शैली नियमों को लागू नहीं करता है क्योंकि । (आईएमओ, अगर यह नियमों को लागू करता तो बेहतर होता ... लेकिन निर्णय बहुत समय पहले किया गया था, और इसे संगतता कारणों के लिए बदला नहीं जा सकता है।)

2

नहीं, इसमें विशेष नहीं है उपयोग, इसे कक्षा के अंदर अन्य तरीकों के समान माना जाएगा।

यह लेख के नीचे पढ़ने लायक हो जाएगा: विधि नाम वर्ग नाम के समान है और यह कोई वापसी प्रकार तो constructor जो उफ़ में विशेष उपयोग के रूप में अपने नाम से जाना जाता है

http://docs.oracle.com/javase/tutorial/java/javaOO/methods.html

हैं।

इस तरह के नामों को विधि के रूप में रखते हुए यह केवल एक भ्रम और कोड रीडबिलिटी बनाएगा। http://java.dzone.com/articles/why-code-readability-matters

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

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