Java/Android中是否有#IF和#CONST .NET等效?

And*_*Bie 5 .net java android const equivalent

我有一个项目,其中有许多代码仅在确定的版本中可用,当我修复错误时,我必须在所有副本中修复它们.这很不方便.

是否有任何#IF#CONST在Java中,如果#IF条款是假的,代码不会被编译?

Joa*_*uer 6

Java没有"官方"预处理器,也没有广泛使用的第三方预处理器.

但是,如果您愿意忍受IDE和许多其他工具无法正确处理它的障碍,那么没有什么能阻止您在代码中使用任何预处理器.

话虽这么说,你通常也不需要Java.您宁愿提供公共接口(或扩展公共基类的类)的多个实现,并在运行时选择它们.

但是,通过使用编译时常量布尔标志,有一种有限形式的条件编译:

 static final DEBUG = false;

 public void frobnicate() {
   if (DEBUG) {
     doExpensiveFrobnicationDebugOperation();
   }
   doActualFrobnication();
 }
Run Code Online (Sandbox Code Playgroud)

此代码将导致昂贵的方法调用编译到生成的.class文件的字节码中.

  • @AndBie:对于这两个混淆器可能会有所帮助.不是因为它使代码更难破解(我真的不相信),而是因为它可以删除死代码(甚至是永远不会调用的方法!).这通常是混淆器用于J2ME代码的原因,即使它是免费的/ libre软件. (2认同)