2013-05-27 15 views

उत्तर

9

इस सवाल का जवाब The Java® Language Specification

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

तो, अगर assert एक विधि इस तरह के कोड थे तो:

assert(check()); 

होगा हमेशा कॉल check विधि, परवाह किए बिना अभिकथन सक्षम या अक्षम है या नहीं।

अब, assert के बाद से (जैसा ऊपर वर्णित) एक विशेष हैंडलिंग के साथ एक कीवर्ड है check विधि केवल जब जोर उसके बाद ही के रूप में सक्षम किया गया है इस ज़ोर की बूलियन अभिव्यक्ति का मूल्यांकन किया जाएगा बुलाया जाएगा। , इस बल्कि एक विधि की तुलना में एक कीवर्ड के साथ जावा (कोई पूर्वप्रक्रमक के साथ एक भाषा) में बेहतर मॉडलिंग है के बाद से एक विधि के साथ इस धारणा है कि कोड को हमेशा चलने वाला होता है -

1

एक संभावित कारण यह ऐसे दावे या सक्रिय किया जा सकता अक्षम किया गया है (भले ही संकलक अक्षम किए गए थे तो कंपाइलर विधि कॉल को हटा देना संभव होगा)।

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

2

जावा दावे कोड में परिवर्तन के बिना पर और बंद किया जा सकता। इससे विकास वातावरण में उनके डीबगिंग मूल्य का लाभ उठाने के दौरान उत्पादन में अनुमानों के रनटाइम ओवरहेड से बचना संभव हो जाता है।

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

अभ्यास में, जावा ज़ोर कीवर्ड नहीं लोकप्रिय है, कम से कम इस समय नहीं है। जुनीट परीक्षणों में अधिकांशतः अनुमान लगाए जाते हैं, क्योंकि अन्य पोस्टर छू चुके हैं। जुनीट दुनिया में, दावे विधि कॉल हैं। वे उत्पादन में कोई ओवरहेड लगाते हैं क्योंकि वे मेनलाइन कोड में नहीं हैं; वे अलग परीक्षण कोड में हैं जो केवल विकास वातावरण में ही चलते हैं।

संबंधित मुद्दे