我很难找到有关javac
的代码消除功能的信息:
我读到,如果您有类似以下内容,则if
- 语句将被消除:
static final boolean DEBUG = false;
if (DEBUG) System.out.println("Hello World!"); // will be removed
但是这个怎么样,例如:
static final int VALUE = 3;
if (VALUE > 9) System.out.println("VALUE > 9 ???"); // will this be removed?
或这个:
static final SomeEnum VALUE = SomeEnum.FOO;
if (VALUE==SomeEnum.BAR) System.out.println("Bar???"); // will this be removed?
由于分析程序以找到所有死代码(可能类似于停止问题)非常困难/不可能,我想只有少数定义明确的构造(如上面的第一个示例),它们javac
将识别并删除可靠。是否有这些构造的完整列表?