यह @ बाला के अच्छे जवाब पर एक टिप्पणी थी, लेकिन यह बहुत लंबा हो गया।
यदि आप केवल दावे को सक्षम करते हैं तो अपनी मुख्य कक्षा को कॉल करें - आपकी मुख्य कक्षा दावे सक्षम होने से पहले लोड हो जाएगी, इसलिए आपको शायद उस लोडर की आवश्यकता होगी जो आपके कोड में सीधे किसी भी अन्य संदर्भ का संदर्भ नहीं दे। यह फिर से प्रतिबिंब के माध्यम से शेष कोड लोड करने पर दावे सेट कर सकते हैं।
यदि वर्ग लोड होने पर दावा सक्षम नहीं हैं तो उन्हें तत्काल "संकलित आउट" होना चाहिए ताकि आप उन्हें चालू और बंद करने में सक्षम न हों। यदि आप उन्हें टॉगल करना चाहते हैं तो आप बिल्कुल दावा नहीं करना चाहते हैं।
public myAssertNotNull(Object o) {
if(checkArguments)
if(o == null)
throw new IllegalArgumentException("Assertion Failed");
}
लगभग के रूप में तेजी से काम करना चाहिए कथनों के रूप में क्योंकि अगर कोड एक बहुत मार डाला जाता है और checkArguments गलत है और उसके बाद परिवर्तन नहीं करता है पूरे विधि कॉल कर सकते हैं:
क्रम संकलन, कुछ इस तरह के कारण
रनटाइम पर संकलित किया जाना चाहिए जिसका दावा एक ही मूल प्रभाव होगा (यह प्रदर्शन वीएम पर निर्भर करता है)।
स्रोत
2011-04-05 21:45:20
जैसा कि आप "टिप्पणियों के आधार पर" छवि को अप्रचलित चिह्नित करने के बाद काम नहीं कर सकते हैं, इसलिए उचित कारण को दस्तावेज करना बेहतर है। आप प्रतिबिंब के माध्यम से MyClass का एक उदाहरण क्यों बनाते हैं? –