Je reçois un avertissement du compilateur pour l'annotation @SuppressWarnings
Dans Eclipse pour le code:
@Override
public boolean doSomething(@SuppressWarnings("unused") String whatever) throws AnException {
throw new AnException("I'm still in bed and can't do anything until I've had a shower!");
}
Il ressemble à un gribouillage jaune sous le mot "inutilisé" et, au survol de la souris, l’info-bulle Unnecessary @SuppressWarnings("unused")
.
Je pense qu'un autre développeur est invité à insérer ces annotations par Eclipse et il m'incite essentiellement à les supprimer. Comment puis-je configurer Eclipse pour qu'il me demande de mettre l'annotation @SuppressWarnings
Au lieu de s'en plaindre?
Si quelqu'un souhaite commenter les meilleures pratiques dans ce domaine, il serait le bienvenu.
Dans le code de votre question, l'annotation @SuppressWarnings("unused")
n'est pas nécessaire, car la méthode redéfinit une autre méthode à partir d'une superclasse ou implémente une interface. Même si vous n'utilisez pas réellement le paramètre whatever
, il est obligatoire de le déclarer, sinon l'annotation @Override
Produira une erreur (vous modifieriez la signature de la méthode remplacée si vous supprimiez le paramètre.)
Dans certaines versions plus anciennes d'Eclipse, le code tel qu'il est présenté ne provoquait pas d'avertissement, mais dans les versions plus récentes, il en est ainsi. Je crois que c'est un avertissement valide, et je préférerais supprimer le @SuppressWarnings("unused")
dans ce cas.
Aller à
Fenêtre → Préférences → Java → Compilateur → Erreurs/Avertissements → Annotations .
Et sélectionnez Ignore pour jeton '@ SuppressWarnings` inutilisé .
Dans mon code, il n'y a pas d'héritage définissant les 3 méthodes avec @SuppressWarnings ("inutilisé")
Ce code donne "Unnecessary @SuppressWarnings (" inutilisé ")" dans Eclipse Juno (dernière version), mais si je supprime le @SuppressWarnings ("inutilisé"), j'obtiens des avertissements "Le constructeur/la méthode n'est jamais utilisé" dans IntelliJ IDEA 11.1.3
Les méthodes ne sont pas directement utilisées dans le projet, seulement par les produits tiers Jackson, JAXB & GSON, alors IntelliJ a raison, je dirais ...
public class EmailUnsendable extends SkjemaError {
private NestedCommand command; // Can't be Command (interface) because of GSON!
@SuppressWarnings("unused") // Used by Jackson/JAXB/GSON
public EmailUnsendable() {
}
public EmailUnsendable(String referenceNumber, String stackTrace, NestedCommand command) {
super(referenceNumber, stackTrace);
this.command = command;
}
@SuppressWarnings("unused") // Used by Jackson/JAXB/GSON
public NestedCommand getCommand() {
return command;
}
@SuppressWarnings("unused") // Used by Jackson/JAXB/GSON
public void setCommand(NestedCommand command) {
this.command = command;
}
}
Je crois que c'est une erreur dans Eclipse.
Sinon, si vous pensez qu'il est plus correct de supprimer l'annotation SuppressWarnings:
Fenêtre -> Préférences -> Java -> Compilateur -> Erreurs/Avertissements -> Code inutile -> La valeur du paramètre n'est pas utilisée
et sélectionnez Ignore dans les méthodes de substitution et d’implémentation