Java条件导入
如何在Java中使用条件导入,就像在C中使用Java条件导入,java,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 =
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不支持条件导入在java中不支持此功能
请记住,C++ IFDEF是在C++的预处理器阶段完成的,在java中没有支持。BR> 在JDK1.5引入注释之前,您可以尝试使用类似于注释处理器的东西
此外,还可以使用注释在编译时进行处理
博客提供了一些信息。您试图做的是一个有效的想法,但您应该使用mock。这是一个很好的图书馆 范例有点不同,但您应该使用模拟库研究单元测试,并了解这一点,这将允许您以更好的方式(在我看来)完成您正在尝试的工作。支持结果文档中的前缀和后缀部分,形成类导入部分非常有用,您甚至可以将导入字符串放在类的中间
//#ifdef FLAG
//+prefix
import some.class.Clazz;
//-prefix
Clazz.call();
//#endif
您可以使用传统的if语句,而不是导入do
Class.forName(“example.ExampleClass”)
,该语句将返回一个Class
对象,然后您可以在该对象上调用Class.newInstance()
。它将允许您避免可能不存在的依赖项的编译时错误,并执行类似于条件导入的操作。这只有在两个日期都实现了一个公共接口的情况下才有好处。例如,如果这两个库都是外部JAR。如果useSql
是static final
,编译器会在编译的代码中包含这两个JAR吗?是的。会的。然而,您仍然需要在运行时提供它:这就是答案