2016-07-03 5 views
0

Ich habe den folgenden Teil des Codes:totem Code Warnung 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."); 
    } 

Aber Eclipse gibt mir einen toten Code Warnung dazu:

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

Können Sie erklären, warum dies happening.Thanks in advance

+1

Wenn Sie erfolgreich zu 'sonst bekommen haben if (fileToLook! = Null)', dann ist es garantiert, dass es nicht ' null ". –

Antwort

4

Nun, fileToLook kann nicht null sein, wenn die else Anweisung erreicht ist, denn wenn es null ist, wird die erste Bedingung eine NullPointerException werfen.

es mehr Sinn machen würde, die Methode Refactoring, und vermeiden Sie das Potential 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 
} 
+0

Ich denke, es ist besser, 'fileToLook == null 'zu überprüfen, damit Sie die nette Mehrwege' if' Struktur beibehalten können. – Andreas

2

Nun die null if (fileToLook != null) Prüfung ist eigentlich nicht erforderlich, weil if (fileToLook.isDirectory()) bereits eine NullPointerException wirft, wenn es null ist. Der letzte else kann also nie erreicht werden.

2

Die erste if Bedingung wird eine NullPointerException werfen, wenn fileToLook Null ist. Die zweite Verzweigung wird verwendet, wenn sie nicht null ist. Daher wird der dritte Zweig niemals ausgeführt.

Vielleicht möchten Sie zuerst den Null-Check setzen.