一尘不染

Java If(false)编译

tomcat

我正在使用Tomcat开发一个动态Web项目。拥有全局标志是很有用的,这是我在开发服务器和部署服务器之间唯一要做的更改。该标志的最大用途是与print语句一起使用。

public class Debug {
    public final static boolean DEVEL = true;        
    public static void print(String message){
        if(DEVEL){
            System.out.println(message);
        }
    }
}

我的问题是,java将编译出打印语句。即,如果devel标签为false,则消息显然不会打印,但会包含在类文件中(devel是最终的)。这是效率问题。我听说Java编译器非常聪明,但是它将对此进行补充。


阅读 342

收藏
2020-06-16

共1个答案

一尘不染

使用“最终”属性(如您所做的那样),它将编译出代码:

public static final boolean DEVEL = false;

您可以通过grepping结果类文件来检查是否只有在编译代码后才会出现的字符串。

2020-06-16