क्या आप StringUtils.EMPTYइसके बजाय उपयोग करते हैं ""?
मेरा मतलब या तो रिटर्न वैल्यू के रूप में है या यदि आप स्ट्रिंग वेरिएबल का मान सेट करते हैं। मैं तुलना के लिए मतलब नहीं है, क्योंकि वहाँ हम का उपयोग करेंStringUtils.isEmpty()
जवाबों:
बिलकूल नही। क्या आप वास्तव में सोचते हैं कि "" पर्याप्त स्पष्ट नहीं है?
स्थिरांक में अनिवार्य रूप से 3 उपयोग के मामले हैं:
यहां कोई भी आवेदन नहीं करता है।
EMPTYकोई मतलब नहीं है जो खाली स्ट्रिंग के पास पहले से नहीं है। सबसे विशेष रूप से, यह दस्तावेज नहीं करता है कि आपने उस विशेष मामले में खाली स्ट्रिंग का उपयोग करने का निर्णय क्यों लिया। यह एक स्थिर का नामकरण करने के लिए अलग नहीं है ONEऔर दिखावा है कि मूल्य के बजाय उस निरंतर का उपयोग करने में एक बिंदु था।
मैं उपयोग करता हूं StringUtils.EMPTY, शाब्दिक रूप से छिपाने के लिए और यह भी व्यक्त करने के लिए कि return StringUtils.EMPTYपूरी तरह से उम्मीद थी और एक खाली स्ट्रिंग वापस आनी चाहिए, ""इस धारणा को जन्म दे ""सकती है जिसे आसानी से किसी और चीज में बदला जा सकता है और यह शायद केवल एक गलती थी। मुझे लगता है कि EMPTYयह अधिक स्पष्ट है।
StringUtils.EMPTY कम अभिव्यंजक पाता हूं ""।
""करने की तुलना में अधिक अभिव्यंजक StringUtils.EMPTYलगता हूं, और आपने जो कहा है, उस पर मेरा मन नहीं बदला है। मैं सिर्फ इस बारे में विश्वास कर सकता हूं कि डेवलपर्स ने गलत स्ट्रिंग लिटरल को बहुत, कभी - कभार लिखा है - लेकिन मैं एक बार में मिलियन में (और आसानी से परीक्षण में पाया गया, उम्मीद है कि स्ट्रिंग स्ट्रिंगल की स्पष्टता लूंगा) ) बग, व्यक्तिगत रूप से।
नहीं, बस उपयोग करें ""।
""क्रिस्टल के रूप में शाब्दिक स्पष्ट है। कोई गलतफहमी नहीं है कि क्या मतलब था। मुझे नहीं पता कि आपको इसके लिए एक वर्ग स्थिरांक की आवश्यकता क्यों होगी। मैं केवल यह मान सकते हैं कि यह लगातार युक्त पैकेज प्रयोग किया जाता है StringUtilsके बजाय ""। इसका मतलब यह नहीं है कि आपको इसका उपयोग करना चाहिए, हालांकि।
यदि फुटपाथ पर चट्टान है, तो आपको उसे फेंकने की जरूरत नहीं है।
मैं आश्चर्यचकित हूं कि कितने लोग आंख मूंदकर यह मानने में प्रसन्न हैं कि "" वास्तव में एक खाली तार है, और (दुर्घटनावश?) में यूनिकोड का कोई भी अद्भुत अदृश्य और गैर-रिक्त स्थान नहीं है। सभी के प्यार के लिए जो अच्छा और सभ्य है, जब भी आप कर सकते हैं EMPTY का उपयोग करें।
मैं अपने दो सेंट यहाँ जोड़ूंगा क्योंकि मैं किसी को Stringइंटर्न और क्लास इनिशियलाइज़ेशन के बारे में बात करते हुए नहीं देखता :
Stringजावा स्रोतों में शाब्दिक, प्रशिक्षु कर रहे हैं किसी भी "" और एक ही वस्तुStringUtils.EMPTYStringUtils.EMPTY को इनिशियलाइज़ कर सकते हैंStringUtils , क्योंकि यह अपने स्टेटिक मेंबर को EMPTY तभीfinal एक्सेस करता है, जब वह घोषित नहीं होता है (उस बिंदु पर JLS विशिष्ट है)। हालाँकि, यह अंतिम है, इसलिए यह कक्षा को प्रारंभ नहीं करेगा।org.apache.commons.lang3.StringUtils.EMPTY स्ट्रिंग इंटर्निंग पर और क्लास इनिशियलाइज़ेशन पर , JLS 12.4.1 का उल्लेख करते हुए संबंधित उत्तर देखें ।
StringUtils।
मैं वास्तव में इसका इस्तेमाल नहीं करना चाहता, जैसा return "";कि इससे कम है return StringUtils.EMPTY।
हालांकि, इसका उपयोग करने का एक गलत फायदा यह है कि यदि आप return " ";इसके बजाय टाइप करते हैं return "";, तो आप विभिन्न व्यवहार का सामना कर सकते हैं (यदि आप सही ढंग से खाली स्ट्रिंग का परीक्षण करते हैं या नहीं) के बारे में।
""भी पसंद नहीं है , मैं एक ही समय में एक ही बार में एक ही शाब्दिक स्ट्रिंग टाइप करने से नफरत करता हूं, यहां तक कि कभी-कभी ही। मैं लगातार कॉन्स्टेंट्स.जाव में स्थिरांक घोषित करता हूं , लेकिन उन्हें स्रोत कोड में हर जगह दोहराता नहीं हूं।
return ""; बदसूरत है, मैं पसंद करते हैं वापसी उपयोग करने के लिए StringUtil.EMPTY(अपने ही वर्ग में घोषित StringUtil , नहीं अपाचे के StringUtils )।
यदि आपकी कक्षा कॉमन्स से कुछ और उपयोग नहीं करती है, तो यह इस जादुई मूल्य के लिए इस निर्भरता के लिए एक दया होगी।
StringUtils का डिज़ाइनर इस स्थिरांक का भारी उपयोग करता है, और यह सही काम है, लेकिन इसका मतलब यह नहीं है कि आपको इसका भी उपयोग करना चाहिए।
ईमानदारी से, मुझे इसका अधिक उपयोग नहीं दिखता। यदि आप खाली स्ट्रिंग की तुलना करना चाहते हैं, तो उपयोग करेंStringUtils.isNotEmpty(..)
StringUtils.isNotEmpty(..)यह भी एक रिक्त स्ट्रिंग के साथ तुलना के रूप में एक ही नहीं है तो यह एक अशक्त करता है।
null? 2 के तर्क के रूप में equals, लेकिन परिणाम वही होगा -false
isNotEmptyके विपरीत है "".equals(…), इसलिए, तथ्य यह है कि यह व्यवहार करेगा nullरिक्त स्ट्रिंग की तरह है एक खाली स्ट्रिंग, के साथ तुलना करने के लिए विभिन्न "".equals("")→ true, "".equals(null)→ false, StringUtils.isNotEmpty("")→ false, StringUtils.isNotEmpty(null)→ false। यदि आप यह जानना चाहते हैं कि क्या एक स्ट्रिंग खाली है, तो उपयोग करें string.isEmpty(), जिसमें trueiff लौटाने का सही व्यवहार है, यह एक रिक्त स्ट्रिंग है और NullPointerExceptionयदि स्ट्रिंग है तो फेंकना null...
मैं StringUtils.EMPTYकुछ मामलों में उपयुक्तता के लिए उपयोगी पाता हूं । विशेष रूप से:
टेनरी संचालक उदा।
item.getId() != null ? item.getId() : StringUtils.EMPTY;
निरंतर का उपयोग करके भी, एक संदर्भ StringUtils.EMPTYबनाया जाता है। अन्यथा यदि आप ""हर बार स्ट्रिंग शाब्दिक को तुरंत करने की कोशिश करते हैं , तो जेवीएम को यह जांचना होगा कि क्या वह स्ट्रिंग पूल में पहले से मौजूद है (जो कि इसकी संभावना है, इसलिए कोई अतिरिक्त उदाहरण ओवरहेड नहीं है)। निश्चित रूप StringUtils.EMPTYसे स्ट्रिंग पूल की जांच करने की आवश्यकता से बचा जाता है?
StringUtils.EMPTYनिरंतर को संकलन-समय पर हल किया जाता है।
StringUtil.EMPTYएक संकलन-समय स्थिर है, इसका एक संदर्भ ""सीधे उपयोग के रूप में ठीक उसी बायोटेक के लिए संकलित हो जाता है । इसके अलावा, मैं यह नहीं देखता कि टर्नरी ऑपरेटर को कोई अंतर क्यों करना चाहिए। यह किसी अन्य की तरह एक अभिव्यक्ति है। नामांकित स्थिरांक का उपयोग करने या न करने का कोई कारण टर्नरी ऑपरेटर पर भी लागू होता है।
नहीं, क्योंकि मुझे लिखना अधिक है। और एक खाली स्ट्रिंग, प्लैटफ़ॉर्म स्वतंत्र रिक्त (जावा में) है।
File.separator "/" या "\" से बेहतर है।
लेकिन जैसा चाहो वैसा करो। आपको एक टाइपो नहीं मिल सकता हैreturn " ";
someString.isEmpty()इसके बजाय लिखते हैं।
हाँ, यह समझ में आता है। यह जाने का एकमात्र तरीका नहीं हो सकता है लेकिन मैं इसे "समझ में नहीं आता" कहने के तरीके में बहुत कम देख सकता हूं।
मेरी राय में:
It will still require changing everywhere if you don't define your own variable and use it in multiple places.आप एक खाली स्ट्रिंग को एक अलग स्ट्रिंग में बदलने जा रहे हैं?
StringUtils.EMPTY। यह स्पष्ट करता है कि खाली स्ट्रिंग के उपयोग का इरादा है, न कि किसी प्रकार का आलस्य ("ओह, इसके लिए एक स्ट्रिंग की आवश्यकता है, चलो पास""")। यदि कोई इस कोड को हिट करता है, तो वह बदलाव करने से पहले दो बार सोचेंगे। इसके अलावा, यदिStringUtils.EMPTYआपके स्वयं के चर के रूप में परिभाषित किया गया है, जैसेMyClass.EMPTY, "उस खालीपन का प्रतिनिधित्व" करने के लिए परिवर्तन करना कोड की एक पंक्ति को बदलने की आवश्यकता होगी। उदाहरण के लिए, आप"<empty>"खाली स्ट्रिंग के बजाय इसे बदल सकते हैं""। लेकिन, मुझे लगता है कि यह बहुत दूर जा रहा है।