2012-07-02 17 views
12

जावा में सशर्त आयात करने के लिए कैसे की तरह हम सी इस में ifdefs है मैं क्या हासिल करनाजावा सशर्त आयात

ifdef TEST 
import com.google.mystubs.swing; 
elif 
import javax.swing.*; 
endif 
+0

संभावित सबसेट: http://stackoverflow.com/questions/4526113/java-conditional-compilation-how-to-prevent-code-chunks-to-be-compiled –

उत्तर

13

आप जावा

साथ सशर्त आयात की जरूरत नहीं है

लेकिन आप का इरादा है

if(useSql){ 
    java.sql.Date date = new java.sql.Date() 
}else{ 
    java.util.Date date = new java.util.Date() 
} 
: सशर्त उदाहरण के लिए पूरी तरह से योग्य नाम

का उपयोग कर एक ही नाम के साथ विभिन्न वर्गों इस्तेमाल कर सकते हैं

+2

यह केवल वास्तव में लाभ होगा यदि दोनों तिथियों ने एक आम इंटरफेस लागू किया। – gdw2

+0

कहें कि क्या दोनों पुस्तकालय बाहरी जार थे। क्या कंपाइलर में उन दोनों JAR को संकलित कोड में शामिल किया जाएगा यदि 'useSql'' स्थिर अंतिम 'था? –

+0

हां। यह। हालांकि आपको अभी भी रनटाइम के दौरान इसे प्रदान करने की आवश्यकता है –

2

हमारे पास जावा

0

जावा में सशर्त आयात नहीं है सशर्त import का समर्थन नहीं करता है।

2

जावा में इसके लिए कोई समर्थन नहीं है।
ध्यान रखें कि #IFDEF सी ++ पर प्री-प्रोसेसर चरण में किया जाता है - इसके लिए जावा में कोई समर्थन नहीं।
जेडीके 1.5 में दिन एनोटेशन पेश किए जाने से पहले, आप एनोटेशन प्रोसेसर की तरह कुछ और कोशिश कर सकते हैं।
इसके अलावा, आप संकलन समय के दौरान संसाधित होने के लिए एनोटेशन का उपयोग कर सकते हैं।
This ब्लॉग आपको कुछ जानकारी प्रदान करता है

0

जो आप करने का प्रयास कर रहे हैं वह एक वैध विचार है, लेकिन आपको इसके बजाय मोक्स का उपयोग करना चाहिए। Mockito इसके लिए एक महान पुस्तकालय है।

प्रतिमान थोड़ा अलग है, लेकिन आपको एक मॉकिंग लाइब्रेरी के साथ यूनिट परीक्षण में देखना चाहिए और इसकी समझ प्राप्त करना चाहिए, जो आपको बेहतर तरीके से (मेरी राय में) तरीके से करने की अनुमति देगा ।

0

Java Comment Preprocessor परिणाम दस्तावेज़ में उपसर्ग और पोस्टफ़िक्स वर्गों का समर्थन करता है और यह बहुत ही वर्ग आयात खंड बनाने के लिए उपयोगी है, तुम भी

//#ifdef FLAG 
//+prefix 
import some.class.Clazz; 
//-prefix 
    Clazz.call(); 
//#endif 
0

आप एक पारंपरिक अगर बयान और इस्तेमाल कर सकते हैं अपने वर्ग के बीच में आयात स्ट्रिंग जगह कर सकते हैं तो Class.forName("example.ExampleClass") आयात करने के बजाय यह Class ऑब्जेक्ट वापस करेगा जो आप Class.newInstance() पर आक्रमण कर सकते हैं। यह आपको उन निर्भरताओं के लिए संकलन समय त्रुटियों से बचने की अनुमति देगा जो अस्तित्व में नहीं हो सकते हैं और साथ ही ऐसा कुछ भी कर सकते हैं जो सशर्त आयात के समान है।

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