सावधान!
जब तक आप स्पष्ट रूप से अपने कोड को संकलित करने के लिए "जोर देने के लिए" निर्दिष्ट नहीं करते हैं, तब तक रनटाइम पर दावे हटा दिए जाते हैं। जावा अभिकथन का उपयोग उत्पादन कोड पर नहीं किया जाना चाहिए और इसे निजी विधियों ( अपवाद बनाम अभिकथन देखें ) तक सीमित रखा जाना चाहिए , क्योंकि निजी तरीकों को केवल डेवलपर्स द्वारा ही जाना और उपयोग किया जाना अपेक्षित है। साथ assertही जोर-जोर से जोर लगाएगा जो कि विस्तारित Errorनहीं होता है Exception, और जो सामान्य रूप से इंगित करता है कि आपके पास एक बहुत ही असामान्य त्रुटि है (जैसे "आउटऑफमेरीऑरर" जो कि इससे उबरना मुश्किल है, क्या यह नहीं है?) आपको इलाज करने में सक्षम होने की उम्मीद नहीं है।
"सक्षम करें" ध्वज निकालें, और डीबगर के साथ जांचें और आप देखेंगे कि आप IllegalArgumentException थ्रो कॉल पर कदम नहीं उठाएंगे ... क्योंकि इस कोड को संकलित नहीं किया गया है (फिर से, जब "ea" हटा दिया जाता है)
सार्वजनिक / संरक्षित विधियों के लिए दूसरे निर्माण का उपयोग करना बेहतर है, और यदि आप कुछ ऐसा चाहते हैं जो कोड की एक पंक्ति में किया जाता है, तो कम से कम एक तरीका है जो मुझे पता है। मैं व्यक्तिगत रूप से उपयोग करें स्प्रिंग फ्रेमवर्क के Assertवर्ग तर्क और विफलता पर कि फेंक "IllegalArgumentException" जाँच के लिए कुछ तरीकों है। मूल रूप से, आप क्या करते हैं:
Assert.notNull(obj, "object was null");
... जो वास्तव में उसी कोड को निष्पादित करेगा जो आपने अपने दूसरे उदाहरण में लिखा था। कुछ अन्य उपयोगी तरीके हैं hasText, जैसे कि hasLengthवहाँ।
मुझे आवश्यकता से अधिक कोड लिखना पसंद नहीं है, इसलिए जब मैं लिखित पंक्तियों की संख्या को 2 (2 पंक्तियों> 1 पंक्ति) से कम कर खुश हूँ तो :-)
obj.hashCode()इसके बजाय एक सरल पसंद करता हूं ;-)