Java findbug的危险代码警告

Java findbug的危险代码警告,java,findbugs,Java,Findbugs,我的代码如下: 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

我的代码如下:

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();
    }
}
public void myfun(int值)抛出ApplicationException{
Object obj=新对象();
如果(值==1){
obj=
}else if(值==2){
obj=
}
否则{
抛出ApplicationException();
}
}

我得到了警告,因为我找到了一个死存储到
obj
。我知道这个错误是因为obj是局部变量,我没有在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();
}

为什么要将值存储在变量中而不使用它?

这不是一个不可靠的警告,它是一个不必要的死存储。这与其他条件无关

你的选择是

使用变量,使存储不再那么死气沉沉

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();
}

为什么要将值存储在变量中而不使用它?

如果只在
if
中使用它,那么在
if
中定义它,您可以重构以使用
if(value!=true){throw ApplicationException();}打开
然后在知道它是真的情况下安全地继续函数的其余部分。@ScaryWombat实际上有多个if-else,函数的输入是整数。所以我必须在if之外定义它。@jornsharpe Seams就像一条路要走。但这是一种好的代码实践吗?一种选择是根本不使用其他方法。我想了解好的代码实践,这要看情况而定。您的示例太笼统了,不能说太多。如果您只在
if
中使用它,那么可以在
if
中定义它,您可以重构以使用
if(value!=true){throw ApplicationException();}
然后在知道它是真的情况下安全地继续函数的其余部分。@ScaryWombat实际上有多个if-else,函数的输入是整数。所以我必须在if之外定义它。@jornsharpe Seams就像一条路要走。但这是一种好的代码实践吗?一种选择是根本不使用其他方法。我想了解好的代码实践,这要看情况而定。你的例子太笼统了,说不多。