2011-06-24 4 views
5

मेरे पास एक प्रोजेक्ट है जिसमें कई कोड केवल निर्धारित संस्करण में उपलब्ध हैं, और जब मैं एक बग ठीक करता हूं तो मुझे उन्हें सभी प्रतियों में ठीक करना होगा। यह बहुत असुविधाजनक है।क्या जावा/एंड्रॉइड में कोई #IF और #CONST .NET समतुल्य है?

क्या जावा में कोई #IF और #CONST है, यदि #IF खंड गलत है, तो कोड संकलित नहीं किया जाएगा?

उत्तर

6

जावा के लिए कोई "आधिकारिक" प्री-प्रोसेसर नहीं है, और कोई तीसरा पक्ष नहीं है जिसका व्यापक रूप से उपयोग किया जाता है।

लेकिन कुछ भी आपको अपने कोड पर इच्छित किसी भी प्री-प्रोसेसर का उपयोग करने से रोकता है, अगर आप विकलांगता से जीने के इच्छुक हैं, तो आईडीई और कई अन्य टूल इसे सही तरीके से संभाल नहीं पाएंगे।

कहा जा रहा है कि, आमतौर पर को जावा में इसकी आवश्यकता नहीं है। आप बल्कि एक सामान्य इंटरफ़ेस (या सामान्य बेस क्लास को विस्तारित करने वाले वर्ग) के कई कार्यान्वयन प्रदान करेंगे और रनटाइम पर उनके बीच चयन करेंगे।

है, संकलन समय निरंतर बूलियन झंडे का उपयोग करके सशर्त संकलन की लेकिन एक सीमित रूप:

static final DEBUG = false; 

public void frobnicate() { 
    if (DEBUG) { 
    doExpensiveFrobnicationDebugOperation(); 
    } 
    doActualFrobnication(); 
} 

इस कोड को महंगा विधि कॉल नहीं में परिणाम होगा जिसके परिणामस्वरूप के बाईटकोड में संकलित किया जा रहा .class फ़ाइल।

+0

यह एक अच्छा जवाब है। वैसे भी मेरी तुलना में अधिक सहायक। +1 –

+1

धन्यवाद, मुझे इसके बारे में पता है। हालांकि, प्री-प्रोसेसर प्रदान करता है 2 लाभ: संकलित फ़ाइल आकार छोटा है। दूसरा: यह "मुक्त" संस्करण को "पूर्ण" संस्करण में क्रैक किया गया है (दूसरा पीसी के साथ एंड्रॉइड के साथ कोई समस्या नहीं हो सकती है)। वैसे भी, आपके उत्तर के लिए धन्यवाद:) – AndBie

+2

@AndBie: उन दोनों के लिए एक obfuscator मदद कर सकता है। ऐसा नहीं है क्योंकि यह कोड को क्रैक करने में कठोर बनाता है (मैं वास्तव में उस पर विश्वास नहीं करता), लेकिन क्योंकि यह मृत कोड को हटा सकता है (यहां तक ​​कि विधियों जिन्हें कभी नहीं कहा जाता है!)। यही कारण है कि जे 2 एमई कोड पर obfuscators का उपयोग क्यों किया जाता है, भले ही यह मुफ्त/मुक्त सॉफ्टवेयर हो। –

0

जावा के लिए प्रीप्रोसेसर जैसी कोई चीज़ नहीं है, इसलिए दुर्भाग्य से आप सशर्त संकलन नहीं कर सकते हैं।

+0

वास्तव में? यह बुरा है :(मैं अभी भी एक और जवाब की प्रतीक्षा कर रहा हूं, उम्मीद है कि वहां है, या कोई और समाधान है। – AndBie

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