2011-12-04 3 views
2

Dans le code ci-dessous, pourquoi il ne compile pas sans la dernière déclaration de retour.Comportement de compilation Java

private boolean fileExists(final File[] files, final String name) { 
    if (files == null || files.length == 0) { 
     return false; 
    } 
    for (final File file : files) { 
     return true; 
    } 
    return false; // why is this neessary? 
} 
+1

exemple simplifié pourrait être 'boolean syntaxCheck() {if (true) {return true; } return false;/* Pourquoi 'return false' est-il nécessaire? * /} ' – gnat

Répondre

1

Parce que ce qui se passe si files est vide?

Vous avez besoin de la deuxième déclaration de retour pour ce cas.

1

car files pouvait être vide. La méthode doit renvoyer une valeur booléenne dans tous les cas comme défini dans la signature!

1

Si files est vide (le compilateur ne sait pas, après tout) alors rien ne serait retourné.

3

Si files est vide, vous ne saisissez pas la boucle mais la fonction doit renvoyer un boolean. C'est pourquoi

-3

Si le return à l'intérieur if et for ne sont pas exécutés, nous devons toujours retourner une valeur. Donc, une instruction return est requise.

En regardant le code, nous voyons que soit le retour dans le if ou le for sera atteint, mais cela ne peut pas être déduit par le compilateur.

1

Parce que vous avez déclaré que la méthode retourne une valeur booléenne

private boolean fileExists(final File[] files, final String name) 

Si vous ne voulez pas à retourner quoi que ce soit déclarer alors la méthode comme « vide »

private void fileExists(final File[] files, final String name) 

Vous avez probablement besoin du ' return 'car que se passe-t-il si les deux instructions' if 'sont fausses?