Java条件导入

如何在Java中进行条件导入,就像我们在C中使用ifdefs ,这就是我想要实现的目标

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

您没有使用java进行条件导入

但您可以使用完全限定名称有条件地使用具有相同名称的不同类

例如:

 if(useSql){ java.sql.Date date = new java.sql.Date() }else{ java.util.Date date = new java.util.Date() } 

我们在java中没有条件导入

在Java上没有对此的支持。
请记住#IFDEF是在C ++的预处理器阶段完成的 – 没有Java支持。
在JDK 1.5中引入日期注释之前,您可以尝试和拥有的内容类似于注释处理器。
此外,您可以在编译期间使用注释进行处理。
此博客提供了一些信息。

Java不支持条件import

你想要做的是一个有效的想法,但你应该使用模拟。 Mockito是一个很棒的图书馆。

范例有点不同,但你应该看一下使用模拟库进行unit testing并了解它,这样你就能以更好的(在我看来)的方式做你正在尝试的事情。

Java注释预处理器支持结果文档中的前缀和后缀部分,它对于形成类导入部分非常有用,您甚至可以在类的中间放置导入字符串

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

您可以使用传统的if语句然后导入do Class.forName("example.ExampleClass")这将返回一个Class对象,然后您可以调用Class.newInstance() 。 它允许您避免可能不存在的依赖项的编译时错误,以及执行类似于条件导入的操作。