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

On nous apprend toujours à nous assurer que nous utilisons un break dans les instructions switch pour éviter les chutes.

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

J'ai cependant utilisé case fall-through comme fonctionnalité (nous n'avons pas besoin d'y entrer ici, mais cela fournit une solution très élégante).

Cependant, le compilateur crache des quantités massives d'avertissements qui peuvent masquer les avertissements que j'ai besoin de savoir. Je sais pas comment je peut changer le compilateur pour ignorer tous les avertissements de chute, mais je voudrais l'implémenter méthode par méthode pour éviter de manquer un endroit où je n'avais pas l'intention de tomber.

Des Idées?

24
demandé sur Peter Mortensen 2009-02-27 11:42:45

5 réponses

Si vous devez vraiment, vraiment faire cela, et vous êtes sûr que vous ne faites pas d'erreur, consultez l'annotation @SuppressWarnings . Je suppose que dans votre cas, vous avez besoin

@SuppressWarnings("fallthrough")
37
répondu starblue 2009-02-27 08:54:40

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

Par exemple:

@SuppressWarnings("unchecked")
public void someMethod(...) {
    ...
}
4
répondu romaintaz 2009-02-27 08:49:58

Pour compléter une autre réponse sur SuppressWarnings:

@SuppressWarnings("fallthrough")

Essayer de supprimer tout l'avertissement de chute au niveau du compilateur est une mauvaise chose: comme vous l'avez expliqué, les cas où vous devez passer à travers 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 de chute si vous oubliez vraiment une pause quelque part elese dans votre code.

4
répondu Nicolas 2009-05-13 08:36:06

Vous pouvez créer une structure d'instructions 'if' à la place du commutateur. Peut-être pas aussi visuellement agréable mais ni est la supression d'avertissement.

1
répondu Maxwell 2012-01-24 22:18:48
@SuppressWarnings("fallthrough")

Java a toujours suivi le style C des instructions switch, où vous devez explicitement sortir d'un switch sauf si vous souhaitez simplement tomber et exécuter le code dans le cas ci-dessous. Cela peut être dangereux, bien sûr, et les erreurs de ce genre peuvent être très difficiles à dépister. 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
répondu Jay 2017-05-13 00:12:20