Où est la documentation pour les valeurs de() la méthode d'Enum?
Je déclarer une énumération que :
enum Sex {MALE,FEMALE};
Et puis, itérer enum comme indiqué ci-dessous :
for(Sex v : Sex.values()){
System.out.println(" values :"+ v);
}
J'ai vérifié l'API Java, mais ne peut pas trouver les valeurs de() la méthode? Je suis curieux de savoir où cette méthode vient de la?
API lien :
https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html
- A écrit un article à ce sujet: Où est la javadoc de valeurs et valueOf méthodes sur les énumérations?!
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas voir cette méthode dans la javadoc, car il est ajouté par le compilateur.
Documenté dans trois endroits :
Enum.valueOf
classespécial implicite
values
méthode est mentionné dans la description devalueOf
méthode)La
values
fonction tout simplement la liste de toutes les valeurs de l'énumération.La méthode est implicitement défini (i.e. généré par le compilateur).
De la JLS:
Added by the compiler
n'y a pas de .java pour le présent code ou le code est généré par le compilateur? J'ai vérifié le OpenJDK code source d'Enum et il n'y a pasvalues()
Exécuter ce
vous verrez
Ce sont toutes les méthodes publiques que le "sexe" de la classe a. Ils ne sont pas dans le code source, javac.exe ajouté
Notes:
ne jamais utiliser le sexe comme un nom de classe, il est difficile de lire votre code, nous utilisons le Sexe en Java
face à un Java puzzle comme celui-ci, je vous recommande d'utiliser un bytecode decompiler outil (j'utilise Andrey Loskutov du bytecode contour Eclispe plugin). Cela permettra de montrer à tous ce qui est à l'intérieur d'une classe