Pour les personnes suggérant lancer une exception:
Lancer une exception ne me donne pas une erreur de compilation, il me donne une erreur d'exécution. Je sais que je peux lancer une exception, je préfère mourir lors de la compilation que lors de l'exécution.
La première, je suis à l'aide d'eclipse 3.4.
J'ai un modèle de données qui a un mode de propriété qui est un Enum.
enum Mode {on(...), off(...), standby(...); ...}
Je suis actuellement à la rédaction d'une vue de ce modèle et j'ai le code
...
switch(model.getMode()) {
case on:
return getOnColor();
case off:
return getOffColor();
case standby:
return getStandbyColor();
}
...
J'obtiens un message d'erreur "Cette méthode doit retourner un résultat de type java.awt.La couleur" parce que je n'ai pas de cas de défaut et sans retour xxx à la fin de la fonction. Je veux une erreur de compilation dans le cas où quelqu'un ajoute un autre type enum (par exemple shuttingdown) donc je ne veux pas mettre un cas de défaut qui déclenche une AssertionError, ce qui permettra de compiler une modification de la Mode et ne pas être vu comme une erreur jusqu'à ce que l'exécution.
Ma question est la suivante:
Pourquoi ne EclipseBuilder (et javac) de ne pas reconnaître que ce commutateur couvre toutes les possibilités (ou couvre-t-elle?) et arrêter de me prévenir sur d'avoir besoin d'un type de retour. Est il possible que je peux faire ce que je veux sans ajout de méthodes à la Mode?
À défaut, est-il une option d'avertissement/d'erreur sur les instructions switch qui ne couvre pas tous les Enum valeurs possibles?
Edit: Rob: C'est une compilation d'erreur. J'ai juste essayé de le compiler avec javac et je reçois un "manque d'instruction return" erreur de ciblage de la dernière } de la méthode. Eclispe seulement des lieux de l'erreur en haut de la méthode.