web-dev-qa-db-fra.com

Comment supprimer les avertissements du compilateur Java pour des fonctions spécifiques

On nous apprend toujours à utiliser des instructions break in pour éviter les chutes.

Le compilateur Java met en garde contre ces situations pour nous aider à ne pas commettre d'erreurs triviales (mais drastiques).

Cependant, j'ai utilisé les retombées de cas comme caractéristique (nous n'avons pas à entrer ici, mais cela fournit une solution très élégante). 

Cependant, le compilateur émet des quantités énormes d'avertissements qui peuvent masquer des avertissements que je dois connaître. Je sais comment je peux changer le compilateur pour qu'il ignore TOUTES les alertes de perte, mais j'aimerais implémenter cela méthode par méthode pour éviter de rater un endroit où je ne voulais pas que la chute se produise.

Des idées?

24
Ron Tuffin

Si vous devez vraiment, vraiment faire cela, et que vous êtes sûr de ne pas commettre d'erreur, consultez l'annotation @SuppressWarnings . Je suppose que dans ton cas tu as besoin

@SuppressWarnings("fallthrough")
37
starblue

Est-ce que l'annotation @SuppressWarnings ( javadoc ) correspond à ce que vous recherchez?

Par exemple:

@SuppressWarnings("unchecked")
public void someMethod(...) {
    ...
}
4
Romain Linsolas

Pour compléter une autre réponse à propos de SuppressWarnings :

@SuppressWarnings("fallthrough")

Essayer de supprimer tous les avertissements non exécutés au niveau du compilateur est une mauvaise chose: comme vous l'avez expliqué, les cas dans lesquels vous devez passer l'avertissement sont clairement identifiés. Ainsi, il devrait être explicitement écrit dans le code (l'annotation @SuppressWarnings("fallthrough") avec un commentaire optionnel est la bienvenue). Ce faisant, vous aurez toujours l’avertissement si vous oubliez vraiment une pause quelque part dans votre code.

4
Nicolas

Vous pouvez créer une structure d'instructions 'if' à la place du commutateur. Ne serait peut-être pas aussi agréable visuellement, mais la suppression des avertissements non plus.

1
Maxwell
@SuppressWarnings("fallthrough")

Java a toujours suivi le style C des instructions de commutateur, où vous devez exploser explicitement un commutateur, à moins que vous ne souhaitiez simplement échouer et exécuter le code dans le cas ci-dessous. Bien sûr, cela peut être dangereux et les erreurs de ce type peuvent être très difficiles à détecter. Dans l'exemple suivant, le cas 1 n'a pas de pause:

@SuppressWarnings("fallthrough")
public void fallthroughTest(int i)
{
    switch (i)
    {
        case 1:
            // Execute both 1 and 2
        case 2:
            // Execute only 1
    }
}
0
Jay