दिलचस्प पोस्ट
किसी एप्लिकेशन को स्थापना रद्द करने से कैसे रोकें? जावा एप्लिकेशन इंस्टॉलर अलग-अलग ब्राउज़रों पर इसके वजन को छोड़कर समान फ़ॉन्ट भिन्न होता है जावा में टॉस्ट्रिंग विधि एक सरणी के लिए काम क्यों नहीं करती? मैं पूरी सेवा को पुनरारंभ किए बिना टॉमकेट वेबएप कैसे अपडेट कर सकता हूं? मैं एक वेक्टर में किसी आइटम का सूचक कैसे प्राप्त करूं? JFrame में पृष्ठभूमि चित्र सेट करना मैं जावा में ध्वनि कैसे खेल सकता हूं? मैं जावास्क्रिप्ट ऑब्जेक्ट को नाम के रूप में एक वैरिएबल का उपयोग करने के लिए एक संपत्ति कैसे जोड़ूं? मैं उबंटू पर PhantomJS कैसे सेटअप और चला सकता हूँ? सीएसएस की ऊँचाई प्रतिशत काम नहीं करती एक अनुक्रम में पहला तत्व ढूंढें जो एक निस्संदेह से मेल खाता है XCode 6 में पीसीएच फ़ाइल PHP: UTF-8 स्ट्रिंग में निकटतम 7-बिट ASCII समकक्ष के साथ umlauts बदलें दो तिथियों के बीच महीनों में अंतर की गणना

जावा में फ़ाइल नाम सार्वजनिक वर्ग के नाम के समान क्यों हैं?

जावा में, फाइल का नाम उस फ़ाइल में निहित public class के नाम के समान होना चाहिए। यह एक सीमा क्यों है? इससे कौन सा उद्देश्य पूरा होगा?

वेब के समाधान से एकत्रित समाधान "जावा में फ़ाइल नाम सार्वजनिक वर्ग के नाम के समान क्यों हैं?"

जावा का एक दिलचस्प दृष्टिकोण था – जहां एक प्रोग्रामर को कोई विकल्प देकर केवल प्रोग्रामिंग अनुभव को नीचा कर सकता है, विकल्प को हटा दें

उन्होंने बहुत कुछ जगहों में ऐसा किया। सुनिश्चित करने के लिए फ़ाइल नाम और संकुल, लेकिन एक फाइल में कई सार्वजनिक कक्षाएं (कभी भी अच्छा नहीं) को अनुमति नहीं दे रही है, जिससे आप फ़ाइलों के बीच वर्गों को विभाजित करने की अनुमति नहीं दे रहे हैं (साथ में काम करने के लिए कड़ी मेहनत नहीं!), आदि।

मैं वास्तव में चाहता हूं कि वे कुछ और आगे चले गए। सार्वजनिक वैरिएबल्स के लिए कोई कारण नहीं है – मुझे कभी एक की आवश्यकता नहीं है, न ही मैंने कभी ऐसी स्थिति देखी है जहां कुछ स्मार्ट प्रोग्रामर ने सोचा कि एक की जरूरत थी और वास्तव में सही था।

मैं विधि / वर्ग के आकार की सीमाओं को भी ध्यान नहीं दूँगा, लेकिन यह स्केचिस प्राप्त कर सकता है (यह आसानी से कोड चेकर्स द्वारा लागू किया जा सकता है, समस्या आम तौर पर होती है कि जिन कंपनियों को सबसे ज्यादा मदद की आवश्यकता होती है वे हैं जिन्हें वे नहीं जानते हैं मदद और, इसलिए, कोड चेकर्स जैसे उपकरण का उपयोग नहीं करते हैं)।

यह ऐसी चीज नहीं है जो सबसे छोटी टीमों के लिए महत्वपूर्ण है, लेकिन जब आपकी टीम बढ़ती है और दुनिया भर में भारत, चीन और कई अन्य स्पॉट के सलाहकारों के साथ कई साइटें बढ़ती जाती है, तो आप अनमोलता की सराहना करना शुरू करेंगे।

सेटर्स / आउटर्स के जवाब में टिप्पणी:

जावा बीन्स बोल्लैंड द्वारा बनाई गई घृणा थी, ताकि वे अपने जीयूआई को हुक कर सकें, फिर जावा में पुनःप्रूफ किया जा सके।

भयानक विचार – ओओ प्रोग्रामिंग से गड़बड़ी – गेटर्स और सेटर्स ए) आपके बहुत अधिक कार्यान्वयन दिखाते हैं और बी) आपको किसी अन्य ऑब्जेक्ट से डेटा पर काम करने के संदर्भ में लगता है कि आप किसी ऑब्जेक्ट को आप के लिए ऑपरेशन निष्पादित करने के बजाय। उन लोगों के लिए खराब हैक जो अभी तक ओ ओ में नहीं सोच सकते हैं

गेटर्स को कभी-कभी जरूरी होता है लेकिन जब तक कि पूरी तरह से अपरिहार्य नहीं देखा जाता तब तक इसे जोड़ा नहीं जाना चाहिए।

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

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

मैं कहने वाला था, कि यह सिर्फ एक जरूरी है लेकिन मैंने जेएलएस को देखा, और यह सख्त नहीं है जेएलएस के परिप्रेक्ष्य से, यह संकलक के लिए छोड़ दिया जाता है कि यह चुनने के लिए कि क्या इस तरह की प्रतिबंध है या नहीं

व्यावहारिक रूप से बोली जाने वाली – आम कंपलर्स के पास ऐसा प्रतिबंध है, और, जैसा कि पहले से ही समझाया गया है, कंपाइलर के लिए संकलन इकाई ढूंढने या क्लासलोडर के लिए क्लास फ़ाइल को इस तरह की प्रतिबंध के साथ मिलना इतना आसान है

अधिक विशिष्ट होने के लिए फ़ाइल नाम shoud उस फ़ाइल में सार्वजनिक वर्ग नाम के समान नाम है। जो कि जेवीएम को यह बताता है कि यह वह जगह है जो आपके लिए प्रवेश बिंदु है।

यह सिर्फ जावा के निर्माताओं, सूर्य द्वारा निर्धारित सम्मेलन है ।
उद्देश्य संगठन है; इसका कारण यह है कि हर जावा में कोड वाले सभी फाइलों को नामांकित करने का एक सुसंगत तरीका होगा

प्रत्येक सार्वजनिक वर्ग को एक फ़ाइल में होना चाहिए जहां फाइलनाम क्लासनाम और एक पैकेज से मेल खाता है, जहां पैकैनामेम डायरेक्ट्री स्ट्रक्चर का प्रतिनिधित्व करता है, जो बिन्दु-रूप में लिखे गए (जैसे स्लैश बन गए, जैसे com / example / app com.example.app हो)।

यह सम्मेलन यादृच्छिक नहीं है। कंपाइलर को स्रोत फ़ाइलों को खोजने में सक्षम होना चाहिए और कक्षा लोडर कार्यान्वयन को खोजने में सक्षम होना चाहिए। मिलान करने वाले पैकेज के नाम और क्लासनाम यह वास्तव में सरल और अधिक महत्वपूर्ण, तेज बनाता है।

यह सम्मेलन गैर-सार्वजनिक कक्षाओं पर लागू नहीं होता है इसका कारण यह है कि गैर-सार्वजनिक कक्षाओं में बहुत सीमित दृश्यता है और इसका उपयोग केवल उन पैकेज के भीतर किया जा सकता है जहां उन्हें परिभाषित किया गया है। इस प्रकार, दोनों ही मामलों में, संकलक और रनटाइम पर्यावरण ने पहले ही सही फाइलें रखी हैं

प्र। 'फिर सी ++ के मामले में यह कैसे काम करता है, जहां ऐसा कोई प्रतिबंध नहीं है?'

ए यह काम नहीं करता है। आपके पास मेकफील होना चाहिए आपको जावा में एक की जरूरत नहीं है।

यह कक्षा को खोजने में उपयोगी है। यानी मान लीजिए कि विभिन्न फाइल नामों की अनुमति है और यदि आपने एक वर्ग का एक उदाहरण बनाया है तो कंपाइलर को सभी फाइलों में क्लास को खोजना पड़ता है, अगर फाइल-नाम क्लास की तरह ही हैं, तो पता लगाने और क्लास का उपयोग करने का कार्य है बढ़ा हुआ। उनके अन्य कारण भी हो सकते हैं

जब तक यह सार्वजनिक नहीं है तब तक क्लास का नाम अपने फ़ाइल नाम से भिन्न हो सकता है कक्षा में मुख्य विधि भी हो सकती है। क्लास फ़ाइल क्लास का नाम के साथ उत्पन्न हो जाएगी लेकिन स्रोत फ़ाइल नाम के साथ नहीं। क्लास का नाम इसे निष्पादित करने के लिए उपयोग किया जाना चाहिए।

इसका कारण यह है: डिफ़ॉल्ट क्लास पैकेज निजी है, इस प्रकार जवाक को इस स्रोत फ़ाइल को कंपाइलर को पैकेज के बाहर से कुछ अन्य जावा प्रोग्राम नहीं मिलना पड़ता है।

शुभ संध्या सर, क्यू) सार्वजनिक वर्गनाम जावा फ़ाइल नाम क्यों होना चाहिए? उत्तर:

-> फाइल खोलने या फ़ाइल को पढ़ने के लिए ऑपरेटिंग सिस्टम या किसी प्रोग्राम को फ़ाइल नाम की आवश्यकता होती है। -> डेवलपर जावा भाषा का उपयोग कर रहा है डेवलपर कम्पिलर को क्लास फाइल बनाने के लिए निर्देश दे रहा है ताकि इसे बाद में निष्पादित किया जा सके। -> .class फ़ाइल बनाने के लिए, जावा कम्पिलर को जावा फ़ाइल को खोलना और पढ़ना होगा। इस कारण से विकास दो तरह से निर्देश देता है 1) सीधे फ़ाइल नाम 2) अप्रत्यक्ष रूप से अन्य कार्यक्रम ————————————- पहला रास्ता) (1) सीधे फ़ाइल का नाम ————————————- डेवलपर एक फाइल PrivateData.java बनाता है और इस फाइल के अंदर एक बनाता है कक्षा पब्लिकडेटा निजीडेटा.जावा —————- वर्ग सार्वजनिक डेटा {निजी इंट x = 10; int getX () {वापसी x; } सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग अरिज []) {System.out.println ("सार्वजनिक डेटा निष्पादित"); }} ——— संकलित ———- जावैक निजीडेटा। जावा

  DEVELOPER'S THOUGHT: now developer gives instruction to compilor to open and read PrivateData.java file and then create .class file for all the classes those are inside this file. COMPILOR BEHAVIOUR: in the above compilor behaviour is to read all the class declaration those are inside the PrivateData.java file and convert all those into .class file so, OUTPUT: PublicData.class file is created by compilor. ------------------------------------------- 2nd way) (2) indirectly from other program ------------------------------------------- let developer developed below tow java files (1)PrivateData.java (2)UsePrivateData.java PrivateData.java ---------------- class PublicData{ private int x=10; int getX(){ return x; } public static void main(String args[]){ System.out.println("PublicData executed"); } } UsePrivateData.java ------------------- class UsePrivateData{ public static void main(String args[]){ PrivateData pd=new PrivateData(); System.out.println(pd.getX()); } } --------- compile ---------- javac UsePrivateData.java DEVELOPER'S THOUGHT: now developer gives instruction to compilor to open and read UsePrivateData.java file and then create .class file for all the classes those are inside this file and indirectly gives instruction from one of the class/program, like in the above program is PrivateData pd=new PrivateData(); here developer give indirect instruction to compilor to create .class file by reading PrivateData.java (direct instruction is "javac PrivateData.java") COMPILOR BEHAVIOUR: ->in the above compilor behaviour is to read all the class declaration those are inside the UsePrivateData.java file and convert all those into .class file provided one of the classname is equal to the filename. ->now compilor got one more instruction from the program(indirectly from developer) instruction is PrivateData pd=new PrivateData(); now compilor behaviour is different. i) opens the file PrivateData.java ii)searches for the class PrivateData in the file PrivateData.java if found, create .class file for this class and then read all other classes and create .class file for those. if not found donot create .class file for other classes inside the file and raise compilation error like below ------------------------- UsePrivateData.java:3: error: cannot access PrivateData PrivateData pd=new PrivateData(); ^ bad source file: .\PrivateData.java file does not contain class PrivateData Please remove or make sure it appears in the correct subdirectory of the sourcepath. 1 error ---------------------- OUTPUT: depends on the above explanation. 

 WHAT I OBSERVED ------------------------------ ->for the indirect instruction compilor behaviour is to 1st search inside the file for any classname to be same as the filename. ->at a time computer/os/processor/compilor can execute one instruction. let one instruction is to open file and search the class whose name is equal to the filename to match this condition probably Sun Micorsystem/Oracle made a rule that only one public class can be declared inside file whose name should be equal to filename. (or) also , as compilor generates error if classname is not equal to the fileaname, so Sun Microsystem/Oracle made a rule for the good sake of developer that public classname should be equal to the classname and only one public class can reside inside a java file. 

मेरा जवाब सही है या नहीं, मैं नहीं जानता कि मैं सिर्फ सही उत्तर देने के लिए जरूरी हूं।