可达代码,请看看这个Android的代码示例:的Java/Android的代码优化:请问Java的去除构建
private static final boolean aBoolean = false;
...
if(aBoolean){
//do something like logs
}
在这种情况下,由于aBoolean的值是假的,它不能改变在运行时,//会执行类似logs语句的内容在构建时被忽略,还是仍然会构建,并且每次都会评估if?
我试图找到像前处理#DEFINE #IF行为......所以,当我编码,我得到我的日志,当我松开我切换一个值和我所有的调试代码被完全忽略。
(也是我想指出的是,我的问题就是Android面向所以如果在这个问题上的Java和Android之间的差异,请让我知道)
至少对于桌面Java来说,这是不对的,代码将被JIT删除。而且代码不会产生编译时错误。 –
为什么-1在使用return之后尝试放置任何语句而没有任何条件。 这会给出错误“无法访问的代码语句”。 –
具有已知-false条件的if子句从“不可达代码”检测中明确排除*,准确地说是允许这样的事情(基于编译时值的条件执行)。试试吧,你会看到的。 –