我有一个项目,其中有许多代码仅在确定的版本中可用,当我修复错误时,我必须在所有副本中修复它们。这很不方便。
在 Java 中是否存在如果该#IF
子句为false,则不会编译代码?#CONST
#IF
我有一个项目,其中有许多代码仅在确定的版本中可用,当我修复错误时,我必须在所有副本中修复它们。这很不方便。
在 Java 中是否存在如果该#IF
子句为false,则不会编译代码?#CONST
#IF
Java 没有“官方”预处理器,也没有广泛使用的第三方预处理器。
但是,如果您愿意忍受 IDE 和许多其他工具无法正确处理它的障碍,那么没有什么能阻止您在代码上使用任何您想要的预处理器。
话虽如此,您通常也不需要在 Java 中使用它。您宁愿提供公共接口的多个实现(或扩展公共基类的类),并在运行时在它们之间进行选择。
但是,通过使用编译时常量布尔标志,有一种有限的条件编译形式:
static final DEBUG = false;
public void frobnicate() {
if (DEBUG) {
doExpensiveFrobnicationDebugOperation();
}
doActualFrobnication();
}
此代码将导致昂贵的方法调用未编译到结果.class
文件的字节码中。
Java 没有预处理器之类的东西,所以很遗憾你不能进行条件编译。