Bonjour à tous.
Voilà je poste ce petit message parce que je suis actuellement en train d'étudier un bouquin pour passer la SCJP de Sun mais il se trouve qu'en effectuant des examens blancs, je suis tombé sur quelque chose de bizarre que je ne comprend pas.
Alors je pense n'avoir pas saisi une subtilité parce que c'est assez étrange.
Le bouquin que j'utilise est bien entendu le plus connu pour passer la Certif:
http://www.amazon.com/Certified-Prog.../dp/0072253606
Si vous le possédez rendez-vous à la page 73 sur le paragraphe concernant les enums et où ceci est noté noir sur blanc
Sa corolaire est donc de dire qu'un enum déclaré à l'extérieur d'une classe doit être public ou "default".
Maintenant en passant des examens blancs, je suis tombé sur une question me demandant de replacer des bouts de code dans une classe donnée. Au final on obtenait ceci:
Code:
1 2 3 4 5 6 7 8 9 10
| enum X {X1, X2, X3} // 1
public class AStudyInEnum {
public enum Y {Y1, Y2, Y3} // 2
public AStudyInEnum() {
System.out.println(X.X1+""+Y.Y1);
}
public static void main(String[] args) {
new AStudyInEnum();
}
} |
Et il se trouve que j'ai eu mauvais à la question car j'avais inversé les déclarations des énums (//1 et //2).
Ne comprenant pas pourquoi j'ai donc testé ma version du code sous Eclipse et effectivement cela ne compile pas. Par contre, si je retire le "public" dans la déclaration de l'enum en dehors de la classe, ça fonctionne alors parfaitement!
Pourtant suite à la phrase du bouquin il me semblait clair que l'on pouvait utiliser "public" pour déclarer un enum en dehors d'une classe...
Quelqu'un connait-il la subtilité?
Merci d'avance!