17

如何像我们ifdefs在 C 中一样在 Java 中进行条件导入这是我打算实现的

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

7 回答 7

20

您没有使用 java 的条件导入

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

例如:

if(useSql){
  java.sql.Date date = new java.sql.Date()
}else{
  java.util.Date date = new java.util.Date()
}
于 2012-07-02T05:15:50.853 回答
4

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

于 2016-10-05T08:11:05.740 回答
1

Java Comment Preprocessor支持结果文档中的前缀和后缀部分,形成类导入部分非常有用,您甚至可以将导入字符串放在类中间

//#ifdef FLAG
//+prefix
import some.class.Clazz;
//-prefix
   Clazz.call();
//#endif
于 2015-04-03T14:53:56.713 回答
1

我们在java中没有条件导入

于 2012-07-02T05:16:46.843 回答
1

Java 不支持此功能。
请记住,#IFDEF 是在 C++ 的预处理器阶段完成的——Java 对此不支持。
在 JDK 1.5 中引入注释之前,您可以尝试并拥有类似于注释处理器的东西。
此外,您可以在编译时使用注解进行处理。
这个博客提供了一些信息。

于 2012-07-02T05:25:44.487 回答
0

您尝试做的是一个有效的想法,但您应该使用模拟。Mockito是一个很棒的库。

范式有点不同,但是您应该使用模拟库研究单元测试并理解这一点,这将使您能够以更好的方式(在我看来)做您正在尝试的事情。

于 2013-12-16T21:15:12.437 回答
-1

Java 不支持条件import

于 2012-07-02T05:19:43.083 回答