死代码警告java



我有以下部分代码:

public void deepSearch(File fileToLook,ArrayList<File> fileStorage,DefaultComboBoxModel<String> mod){
        if(fileToLook.isDirectory())
        {
            for(File f:fileToLook.listFiles())
                deepSearch(f,fileStorage,mod);
        }
        else if(fileToLook != null){
            fileStorage.add(fileToLook);
            mod.addElement(fileToLook.getName());
        }
        else
            System.out.println("Reached an end.");
    }

但是eclipse给了我一个死代码警告:

else
    System.out.println("Reached an end.");

你能解释一下为什么会这样吗?提前感谢

当到达else语句时,fileToLook不能为空,因为如果它是null,第一个条件将抛出NullPointerException

重构方法会更有意义,并避免潜在的NullPointerException:

if(fileToLook != null) {
    if(fileToLook.isDirectory()) {
        for(File f:fileToLook.listFiles())
            deepSearch(f,fileStorage,mod);
    } else {
        fileStorage.add(fileToLook);
        mod.addElement(fileToLook.getName());
    }
} else {
    System.out.println("Reached an end."); // not sure if you really need this
                                           // statement. It looks like a debug print to me
}

那么空if (fileToLook != null)检查实际上是不需要的,因为if (fileToLook.isDirectory())已经抛出NullPointerException,如果它是空的。因此,最后一个else永远无法到达。

如果fileToLook为空,则第一个if条件将抛出NullPointerException。如果它不为空,则取第二个分支。因此,第三个分支永远不会执行。

你可能想把空检查放在前面

最新更新