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()
。 它允许您避免可能不存在的依赖项的编译时错误,以及执行类似于条件导入的操作。