为什么死码警告?

Usa*_*war 1 java android

我有:

  if (Constants.IS_LIVE_MOD == false)
        account = Constants.OM_ACCOUNT;
  else
        account = "abc";
Run Code Online (Sandbox Code Playgroud)

我在'else'上收到了死警告.为什么会这样,而wat就是它的解决方案.请帮忙.

ste*_*las 10

我假设IS_LIVE_MOD常量是一个声明为false的final变量,如果是,那么变量总是为false而且不能更改,因此else语句永远不会被调用.因此它是死代码.

例如

private static final boolean MY_VAR = false;

if(MY_VAR == false) {
    System.out.println("Always does this");
}
else {
    System.out.println("Dead code");
}
Run Code Online (Sandbox Code Playgroud)

  • 不,不要删除`final`.只是忽略警告.没有更好的方法在Java中执行`#ifdef` ... (2认同)
  • 常数是否会发生变化?如果没有,那么你真的不需要if语句.如果您只是希望警告消失,您可以使用suppresswarnings注释告诉编译器忽略它:http://knol.google.com/k/suppresswarnings-annotation-in-java (2认同)

Jon*_*eet 5

如果IS_LIVE_MOD是带有值的编译时常false,则编译器知道永远不会采用"else"路径,因此会给出警告.(Java语言规范保证它不会出错,但警告你是合理的.)


Ank*_*kur 5

if Constants.IS_LIVE_MOD是常量且其值为false,而编译器知道其他内容永远不会被执行.

你不能把它作为常数.