2011-11-07 17 views
8

Ho questa funzione con un codice morto, contrassegnato da Eclipse.Eclipse contrassegna le linee come codice morto

Ho due linee che controllano uno & b. Le linee che controllano b sono contrassegnate come nulle.

public int[] runThis(List<Integer> buildIds, List<Integer> scenarios, boolean oflag) { 

    int rating[] = new int[scenarios.size()]; 

    if(buildIds == null) { 
     System.out.println("ERROR - Building ID list is null!"); 
     return null; 
    } 

    if(scenarios == null) { 
     System.out.println("ERROR - Scenario list is null!"); //dead 
     return null; //dead 
    } 

    return rating;  

} 

Perché Ellipse rende le due linee come morte? Qualsiasi aiuto? Grazie mille per il tuo tempo.

+8

C'è qualche altro codice in questo metodo? Forse hai passato il dereferenziamento a 'b' prima, il che dice a Eclipse che' b' non può essere 'nullo' a questo punto. In tal caso dovresti anche ricevere un avvertimento come "assegno nullo non necessario" alla riga 'if (b == null)'. –

+1

@Joachim +1000. –

+0

Non so * Eclipse * molto ma IntelliJ IDEA può analizzare il tuo codice in tempo reale e avvisarti che è impossibile raggiungere un codice. Nel tuo caso, se IntelliJ dovesse rilevare che * b * non era mai * null *, allora ti avvertirebbe che queste due linee non possono mai essere raggiunte perché la condizione * b == null ** è sempre falsa. – TacticalCoder

risposta

15

Perché hai già chiamato scenarios.size() nel costruttore di array. Ciò garantisce che scenarios non sia nullo o che abbia generato un'eccezione da quel punto.

+0

Hai ragione. Grazie. – jn1kk

Problemi correlati