2011-12-27 12 views
5

मुझे उत्सुकता है कि कक्षा या विधि पर एक एनोटेशन का उपयोग करना संभव है, रनटाइम के दौरान या उससे पहले, टिप्पणी स्ट्रिंग के लॉगिंग के साथ टिप्पणियों को प्रतिस्थापित करता है। उदाहरण के लिए, अगर एंड्रॉयड पर:रनटाइम के दौरान या उससे पहले लॉगिंग के साथ जावा टिप्पणी को बदलें

@LogComments 
class MyActivity extends Activity { 
    @Override public void onCreate(Bundle b) { 
     super.onCreate(b); 
     // set some local vars 
     int a = 1; 
     int b = 2; 
    } 
} 

कुछ करने के लिए की तरह

class MyActivity extends Activity { 
    @Override public void onCreate(Bundle b) { 
     super.onCreate(b); 
     Log.d("TAG", "set some local vars"); 
     int a = 1; 
     int b = 2; 
    } 
} 
+3

इसे संकलन से पहले होना होगा, कक्षा फाइलों में टिप्पणियों को बनाए रखा नहीं जाता है। – Mat

+1

मुझे नहीं लगता कि ऐसा उपकरण है और मुझे विश्वास नहीं है कि यह एक अच्छा विचार होगा। लॉग्स का मतलब यह पता लगाने के लिए है कि prorgam डीबगिंग चरण में क्या करता है (और आमतौर पर उन लॉग को हटाया जाना चाहिए)। लॉग का उपयोग कुछ उच्च स्तरीय लॉगिंग के लिए भी किया जा सकता है जैसे त्रुटि रिपोर्टिंग या डेवलपर एक टूल का उपयोग करने में सहायता करते हैं। टिप्पणियां कोड के कठिन भाग को समझाने के लिए हैं। उनके पास एक ही इरादा नहीं है। * – Snicolas

+1

ओह, और एंड्रॉइड में, किसी उत्पाद को रिलीज़ करने से पहले लॉगिंग करने के लिए प्रत्येक कॉल को हटाने की अनुशंसा की जाती है। आम तौर पर obfuscation – Snicolas

उत्तर

1

बॉक्स के बाहर। ऐसा करने के लिए कोई भी चीज मौजूद नहीं है।

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

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

+0

यह दिलचस्प है, क्या आपने कभी यह पहले किया है और यदि ऐसा है, तो क्या आपके पास सामान्य रूप से इस विषय पर कोई अनुशंसित पढ़ना है? – dskinner

+0

यह वास्तव में जटिल प्रतीत होता है। और प्रत्येक टिप्पणी को सीधे कॉल में लॉग कॉल में परिवर्तित नहीं किया जा सकता है। – user802421

+0

क्या आप विशेष रूप से कुछ देख रहे हैं? मैंने कुछ समय पहले कुछ संक्षिप्त खोज किया था और जावा http://www.cs.cornell.edu/projects/polyglot/ के लिए पॉलीग्लॉट में आया था लेकिन बाद में थोड़ा और शोध करना होगा। – dskinner

0

अनुवाद होगा कोई इस वजह टिप्पणी रनटाइम पर निकाल दिए जाते हैं संभव नहीं है। सबसे अच्छा मैं सोच सकता हूं कि रन टाइम पर जावाडोक पढ़ रहा है और उनको लॉग इन कर रहा हूं। लेकिन इसमें गैर-जावाडोक टिप्पणियां शामिल नहीं हैं।

0

आप क्या हासिल करने की कोशिश कर रहे हैं?

यदि आप प्रति-वर्ग आधार पर लॉगिंग सक्षम करना चाहते हैं, तो आप किसी प्रकार का ध्वज (स्थिर अंतिम int करेंगे) का उपयोग कर सकते हैं जो लॉगिंग अक्षम या सक्षम करेगा। एंड्रॉइड में लॉग इन करने के कुछ और सुझावों के लिए इस धागे पर एक नज़र डालें: How do I enable/disable log levels in Android?

+0

मेरे पास पहले से ही मेरे एंड्रॉइड एप्लिकेशन इंस्टेंस से जुड़े लॉग को संभालने के लिए एक स्थिर विधि है और चींटी बिल्ड पर आधारित है गुण। उपलब्धि यह जानती है कि जावा रनटाइम के पहले या उसके दौरान ऐसी वस्तुओं को कैसे पूरा किया जाए। प्रश्न उठाए गए मुद्दे को मुख्य प्रश्न पर एक टिप्पणी में देखा जा सकता है, लेकिन उस मुद्दे के लिए एक समाधान प्रश्न के लिए अप्रासंगिक है। – dskinner