我有一个代码:
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语句中使用它。我应该怎么处理这个?
答案 0 :(得分:3)
这不是一个狡猾的警告,它是一个不必要的死店。它与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();
}
为什么要将值存储在变量中而不对其执行任何操作?