क्या आप StringUtils.EMPTY
इसके बजाय उपयोग करते हैं ""
?
मेरा मतलब या तो रिटर्न वैल्यू के रूप में है या यदि आप स्ट्रिंग वेरिएबल का मान सेट करते हैं। मैं तुलना के लिए मतलब नहीं है, क्योंकि वहाँ हम का उपयोग करेंStringUtils.isEmpty()
जवाबों:
बिलकूल नही। क्या आप वास्तव में सोचते हैं कि "" पर्याप्त स्पष्ट नहीं है?
स्थिरांक में अनिवार्य रूप से 3 उपयोग के मामले हैं:
यहां कोई भी आवेदन नहीं करता है।
EMPTY
कोई मतलब नहीं है जो खाली स्ट्रिंग के पास पहले से नहीं है। सबसे विशेष रूप से, यह दस्तावेज नहीं करता है कि आपने उस विशेष मामले में खाली स्ट्रिंग का उपयोग करने का निर्णय क्यों लिया। यह एक स्थिर का नामकरण करने के लिए अलग नहीं है ONE
और दिखावा है कि मूल्य के बजाय उस निरंतर का उपयोग करने में एक बिंदु था।
मैं उपयोग करता हूं StringUtils.EMPTY
, शाब्दिक रूप से छिपाने के लिए और यह भी व्यक्त करने के लिए कि return StringUtils.EMPTY
पूरी तरह से उम्मीद थी और एक खाली स्ट्रिंग वापस आनी चाहिए, ""
इस धारणा को जन्म दे ""
सकती है जिसे आसानी से किसी और चीज में बदला जा सकता है और यह शायद केवल एक गलती थी। मुझे लगता है कि EMPTY
यह अधिक स्पष्ट है।
StringUtils.EMPTY
कम अभिव्यंजक पाता हूं ""
।
""
करने की तुलना में अधिक अभिव्यंजक StringUtils.EMPTY
लगता हूं, और आपने जो कहा है, उस पर मेरा मन नहीं बदला है। मैं सिर्फ इस बारे में विश्वास कर सकता हूं कि डेवलपर्स ने गलत स्ट्रिंग लिटरल को बहुत, कभी - कभार लिखा है - लेकिन मैं एक बार में मिलियन में (और आसानी से परीक्षण में पाया गया, उम्मीद है कि स्ट्रिंग स्ट्रिंगल की स्पष्टता लूंगा) ) बग, व्यक्तिगत रूप से।
नहीं, बस उपयोग करें ""
।
""
क्रिस्टल के रूप में शाब्दिक स्पष्ट है। कोई गलतफहमी नहीं है कि क्या मतलब था। मुझे नहीं पता कि आपको इसके लिए एक वर्ग स्थिरांक की आवश्यकता क्यों होगी। मैं केवल यह मान सकते हैं कि यह लगातार युक्त पैकेज प्रयोग किया जाता है StringUtils
के बजाय ""
। इसका मतलब यह नहीं है कि आपको इसका उपयोग करना चाहिए, हालांकि।
यदि फुटपाथ पर चट्टान है, तो आपको उसे फेंकने की जरूरत नहीं है।
मैं आश्चर्यचकित हूं कि कितने लोग आंख मूंदकर यह मानने में प्रसन्न हैं कि "" वास्तव में एक खाली तार है, और (दुर्घटनावश?) में यूनिकोड का कोई भी अद्भुत अदृश्य और गैर-रिक्त स्थान नहीं है। सभी के प्यार के लिए जो अच्छा और सभ्य है, जब भी आप कर सकते हैं EMPTY का उपयोग करें।
मैं अपने दो सेंट यहाँ जोड़ूंगा क्योंकि मैं किसी को String
इंटर्न और क्लास इनिशियलाइज़ेशन के बारे में बात करते हुए नहीं देखता :
String
जावा स्रोतों में शाब्दिक, प्रशिक्षु कर रहे हैं किसी भी ""
और एक ही वस्तुStringUtils.EMPTY
StringUtils.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()
, जिसमें true
iff लौटाने का सही व्यवहार है, यह एक रिक्त स्ट्रिंग है और 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>"
खाली स्ट्रिंग के बजाय इसे बदल सकते हैं""
। लेकिन, मुझे लगता है कि यह बहुत दूर जा रहा है।