दिलचस्प पोस्ट
मैं जीसीसी को एक फ़ंक्शन को इनलाइन करने के लिए कैसे बता सकता हूं? उद्धृत और अनक्ोटेड स्ट्रिंग दोनों के साथ अल्पविराम से अलग स्ट्रिंग विभाजित करें क्या मैं एक ही दृश्य पर setframe और autolayout का उपयोग कर सकता हूं? _JAVA_OPTIONS JAVA_TOOL_OPTIONS और JAVA_OPTS के बीच का अंतर एक कुकी निकालें कैसे jQuery मोबाइल (1.4 बीटा) में पृष्ठ को बदलने के लिए? त्रुटि "gnu / stubs-32.h: ऐसी कोई फ़ाइल या निर्देशिका" Nachos स्रोत कोड संकलन करते समय Web.config में ऐप सेटिंग एन्क्रिप्ट करना वर्तमान निष्पादन विधि का नाम प्राप्त करना आप AngularJS या Javascript के साथ डाउनलोड करने के लिए एक फ़ाइल कैसे सेवा करते हैं? एकाधिक चेकबॉक्स से $ _POST प्राप्त करें मेरे एंड्रॉइड ऐप में टेक्स्टव्यू लिंक को संभाल लें क्या जावा में इनलाइन फ़ंक्शन हैं? किसी भी मुद्रा स्ट्रिंग को दोहरे में परिवर्तित करें त्रुटि पर स्वतः अजगर डीबगर प्रारंभ करना

आवरण वर्ग और आदिम प्रकार का उपयोग कब करना

जब मुझे प्राचीन वर्गों पर आवरण वर्ग के लिए जाना चाहिए? या आवरण / आदिम प्रकारों के बीच मुझे किस परिस्थिति का चयन करना चाहिए?

वेब के समाधान से एकत्रित समाधान "आवरण वर्ग और आदिम प्रकार का उपयोग कब करना"

दूसरों ने उल्लेख किया है कि संग्रह जैसे कुछ निर्माणों की वस्तुओं की आवश्यकता होती है, और वस्तुओं को उनके आदिम समकक्षों (स्मृति और मुक्केबाजी) की तुलना में अधिक भार मिलता है।

एक और विचार है:

ऑब्जेक्ट को रिक्त करने के लिए, या स्टेट या फ़ंक्शन को इंगित करने के लिए किसी विधि / कन्स्ट्रक्टर में रिक्त पैरामीटर भेजना आसान हो सकता है। यह प्राथमिकताओं के साथ नहीं किया जा सकता है

कई प्रोग्रामर संख्याओं को 0 (डिफ़ॉल्ट) या 1 को इंगित करने के लिए इसका आरंभ करते हैं, लेकिन परिदृश्य के आधार पर, यह गलत या भ्रामक हो सकता है।

यह एक NullPointerException के लिए दृश्य भी सेट करेगा जब कुछ गलत तरीके से उपयोग किया जा रहा है, जो लाइन के नीचे कुछ मनमानी बग से अधिक प्रोग्रामर-अनुकूल है।

आम तौर पर, आप आदिम प्रकारों का उपयोग तब तक करना चाहिए जब तक कि आपको किसी कारण के लिए ऑब्जेक्ट की आवश्यकता न हो (जैसे संग्रह में डाल दिया जाए)। फिर भी, एक अलग दृष्टिकोण पर विचार करें, जिसके लिए ऑब्जेक्ट की आवश्यकता नहीं है यदि आप संख्यात्मक प्रदर्शन को अधिकतम करना चाहते हैं यह दस्तावेज़ीकरण द्वारा सलाह दी जाती है, और इस लेख में यह दर्शाता है कि कैसे ऑटो बॉक्सिंग एक बड़ा प्रदर्शन अंतर पैदा कर सकता है।

मैं केवल आवरण प्रकारों का उपयोग करता हूं यदि आपको करना है

उनको इस्तेमाल करने में आप वास्तव में इसके अलावा Objects कर सकते हैं।

और, आप मेमोरी उपयोग और ओवरटाइम मुक्केबाजी / अनबॉक्सिंग के समय में खो देते हैं।

मेरी राय में, यदि मेरे क्लास सदस्य आवरण चर हैं, तो यह डिफ़ॉल्ट मानों पर भरोसा नहीं करता है, जो डेवलपर अनुकूल व्यवहार है।

1।

 class Person { int SSN ; // gets initialized to zero by default } 

2।

 class PersonBetter { Integer SSN; //gets initialized to null by default } 

पहले मामले में, आप एसएसएन मूल्य को अनिर्धारित नहीं रख सकते यदि आप यह जाँच नहीं कर रहे हैं कि मूल्य का उपयोग करने से पहले इसका सेट किया गया था, तो यह चोट पहुंचा सकता है।

दूसरे मामले में, आप एसएसएन को शून्य के साथ आरंभ कर सकते हैं। जो NullPointerException पर ले जा सकता है लेकिन यह एसएसएन के रूप में अज्ञात रूप से डालने वाले मूलभूत मूल्यों (शून्य) से बेहतर है, जब भी आप एसएसएन क्षेत्र को आरंभ किए बिना इसका उपयोग करने का प्रयास करते हैं।

संग्रह सरल जावा आवरण वस्तुओं के लिए विशिष्ट मामला हैं। हालांकि, आप रैपर को कोड (मान ऑब्जेक्ट) में अधिक विशिष्ट अर्थ देने पर विचार कर सकते हैं।

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

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

अनुप्रयोगों का प्रदर्शन , जो संख्यात्मक गणनाओं से अधिक होता है, प्राथमिकता के उपयोग से बहुत लाभ उठा सकता है

आदिम प्रकार, एक == ऑपरेटर का उपयोग करता है, लेकिन वरीयता के लिए वरीयता के लिए बराबर () विधि को कॉल करना है

"आदिम प्रकार हानिकारक मानते हैं" क्योंकि वे एक अन्य समान वस्तु-उन्मुख मॉडल में "प्रक्रियात्मक शब्दों का मिश्रण करते हैं"

कई प्रोग्रामर संख्या को 0 (डिफ़ॉल्ट) या 1 को इंगित करने के लिए इसे इनिशियलाइज़ करते हैं, लेकिन परिदृश्य के आधार पर, यह गलत या भ्रामक हो सकता है।

यदि आप एक वैल्यू टाइप बनाना चाहते हैं उत्पाद एसकेयू या हवाई अड्डे कोड की तरह कुछ

जब एक आदिम प्रकार (मेरे उदाहरणों में स्ट्रिंग) समानता को परिभाषित करती है, तो आप समानता को ओवरराइड करना चाहेंगे।

यदि आप संग्रह का उपयोग करना चाहते हैं, तो आपको रैपर कक्षाओं का उपयोग करना होगा

आदिम प्रकार, सरणियों के लिए उपयोग किया जाता है इसके अलावा, डेटा का प्रतिनिधित्व करने के लिए जिसका कोई व्यवहार नहीं है, उदाहरण के लिए, एक काउंटर, या बूलियन स्थिति।

ऑटोबॉक्ज़िंग के बाद से, "आदिम या आवरण का इस्तेमाल कब" फ्रंटियर काफी फजी हो गया है

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

व्यावहारिक रूप से मुझे ऐसी स्थिति का सामना करना पड़ा जहां आवरण वर्ग का उपयोग समझाया जा सकता है।

मैंने एक सेवा वर्ग बनाया जिसमें एक long प्रकार की चर थी

  1. यदि वेरिएबल long प्रकार के long – प्रारंभ नहीं किए जाने पर, यह 0 पर सेट किया जाएगा – यह उपयोगकर्ता के लिए भ्रमित होगा जब GUI में प्रदर्शित होता है
  2. यदि वेरिएबल का प्रकार Long – जब आरंभीकृत नहीं किया गया, तो इसे null सेट किया जाएगा – यह शून्य मान GUI में दिखाई नहीं देगा

यह Boolean पर भी लागू होता है जहां मूल्य अधिक भ्रमित हो सकता है जब हम प्राचीन boolean उपयोग करते हैं (डिफ़ॉल्ट मान गलत है)।