cómo hacer que las importaciones condicionales en Java como el que tenemos la ifdefs
en C Esto es lo que pretendo lograrJava importaciones condicionales
ifdef TEST
import com.google.mystubs.swing;
elif
import javax.swing.*;
endif
cómo hacer que las importaciones condicionales en Java como el que tenemos la ifdefs
en C Esto es lo que pretendo lograrJava importaciones condicionales
ifdef TEST
import com.google.mystubs.swing;
elif
import javax.swing.*;
endif
Usted no tiene la importación condicional con java
Pero podría utilizar condicionalmente diferentes clases con el mismo nombre que utilizan nombre completo
por ejemplo:
if(useSql){
java.sql.Date date = new java.sql.Date()
}else{
java.util.Date date = new java.util.Date()
}
Esto solo sería realmente beneficioso si ambos Dates implementó una interfaz común. – gdw2
Decir si ambas bibliotecas son JAR externas. ¿El compilador incluiría ambos JAR en el código compilado si 'useSql' fuera' estático final'? –
Sí. va a. sin embargo, todavía debe proporcionarlo durante el tiempo de ejecución –
No tenemos la importación condicional en Java
Java does't apoyo condicional import
.
No hay soporte para esto en Java.
Ten en cuenta que #IFDEF se realiza en la etapa de preprocesador en C++ - No hay soporte en Java para eso.
Lo que puedes probar y tener es algo así como un procesador de anotaciones, antes de que se introdujeran las anotaciones en JDK 1.5.
Además, puede usar las anotaciones para procesarlas durante el tiempo de compilación.
This blog le proporciona algo de información
Lo que está tratando de hacer es una idea válida, pero debería usar simulaciones en su lugar. Mockito es una gran biblioteca para eso.
El paradigma es un poco diferente, pero debe examinar las pruebas de unidad con una biblioteca burlona y comprender eso, lo que le permitirá hacer lo que está intentando, de una mejor manera (en mi opinión) .
Java Comment Preprocessor apoya secciones prefijo y de sufijo en el documento resultado y es muy útil para formar sección de importación de clase, puede colocar la cadena de importación, aun en medio de su clase
//#ifdef FLAG
//+prefix
import some.class.Clazz;
//-prefix
Clazz.call();
//#endif
Se puede usar un tradicional si declaración y luego, en lugar de importar, haga Class.forName("example.ExampleClass")
que devolvería un objeto Class
que podría invocar Class.newInstance()
en adelante. Le permitiría evitar los errores de tiempo de compilación para las dependencias que pueden no existir y hacer algo similar a la importación condicional.
Posible subconjunto de: http://stackoverflow.com/questions/4526113/java-conditional-compilation-how-to-prevent-code-chunks-to-be-compiled –