Come avere le importazioni condizionali in Java come abbiamo la ifdefs
in C Questo è quello che ho intenzione di realizzareJava importazioni condizionali
ifdef TEST
import com.google.mystubs.swing;
elif
import javax.swing.*;
endif
Come avere le importazioni condizionali in Java come abbiamo la ifdefs
in C Questo è quello che ho intenzione di realizzareJava importazioni condizionali
ifdef TEST
import com.google.mystubs.swing;
elif
import javax.swing.*;
endif
Non dovete importazione condizionale con Java
Ma voi potrebbe condizionatamente usare classi differenti con lo stesso nome utilizzando nome completo
ad esempio:
if(useSql){
java.sql.Date date = new java.sql.Date()
}else{
java.util.Date date = new java.util.Date()
}
Questo sarebbe davvero di beneficio se entrambi Le date hanno implementato un'interfaccia comune. – gdw2
Dire se entrambe le librerie erano JAR esterni. Il compilatore includerebbe entrambi quei JAR nel codice compilato se 'useSql' era' static final'? –
Sì. lo farà. tuttavia è comunque necessario fornirlo durante il runtime –
Non abbiamo l'importazione condizionale in java
Java Non supporta il condizionale import
.
Non c'è supporto per questo in Java.
Ricorda che #IFDEF viene eseguito in fase di pre-processore in C++ - Nessun supporto in Java per questo.
Quello che puoi provare e avere è qualcosa come un processore di annotazioni, prima che le annotazioni dei giorni fossero introdotte in JDK 1.5.
Inoltre, è possibile utilizzare le annotazioni per essere elaborate durante la compilazione.
This blog fornisce alcune informazioni
Quello che stai cercando di fare è un'idea valida, ma si dovrebbe usare mazze invece. Mockito è una grande libreria per questo.
Il paradigma è un po 'diverso, ma dovresti esaminare i test unitari con una libreria di derisione e ottenere una comprensione di ciò che ti consentirà di fare ciò che stai cercando, in un modo migliore (secondo me) .
Java Comment Preprocessor supporta sezioni prefisso e suffisso nel documento risultato ed è molto utile per formare sezione di classe di importazione, è possibile inserire import string anche nel bel mezzo della classe
//#ifdef FLAG
//+prefix
import some.class.Clazz;
//-prefix
Clazz.call();
//#endif
Si potrebbe utilizzare una tradizionale if e quindi invece di importare fare Class.forName("example.ExampleClass")
Ciò restituirebbe un oggetto Class
che è possibile quindi richiamare Class.newInstance()
su. Ti permetterebbe di evitare errori di compilazione per dipendenze che potrebbero non esistere e fare qualcosa di simile all'importazione condizionale.
Possibile sottoinsieme di: http://stackoverflow.com/questions/4526113/java-conditional-compilation-how-to-prevent-code-chunks-to-be-compiled –