findbug 发出的危险代码警告

Dodgy code Warnings by findbug

我有这样的代码:

public void myfun(int value) throws ApplicationException{

    Object obj = new Object();

    if(value == 1){
        obj = <Call to other Service>
    } else if (value == 2){
        obj = <Call to other Service>
    }
    else {
       throw ApplicationException();
    }
}

我收到 FindBug 的警告,Dead 存储到 obj。我知道这个错误是因为 obj 是局部变量而我没有在 else 语句中使用它。我该如何处理?

这不是狡猾的警告,而是不必要的死存储。与else条件无关

你的选择是..

使用变量,让商店不再死气沉沉..

Object obj; // don't new Object() here as we will only write over it

if(value == 1){
    obj = something();
} elseif (value == 2){
    obj = something();
} else {
   throw new ApplicationException();
}

useTheObject(obj);

首先不要做死店。未使用变量?拿出来...

if(value == 1){
    something();
} elseif (value == 2){
    something();
} else {
   throw new ApplicationException();
}

为什么将值存储在变量中而不对其进行任何操作?