D'où l'Enum.valueOf(String) méthode venir?
En Java SE 7 (et plus probablement dans les versions précédentes) Enum classe est déclarée comme ceci:
public abstract class Enum<E extends Enum<E>>
extends Object
implements Comparable<E>, Serializable
L'Enum classe possède une méthode statique avec cette signature:
T static<T extends Enum<T>> valueOf(Class<T> enumType, String name)
Mais il n'existe pas de méthode statique : valueOf(String)
définies dans l'énumération de la classe, ni en haut dans la hiérarchie Enum appartient.
La question est de savoir d'où vient valueOf(String)
viennent ?
Est-ce une caractéristique de la langue, c'est à dire une fonctionnalité intégrée dans le compilateur ?
Vous devez vous connecter pour publier un commentaire.
Cette méthode est implicitement défini par le compilateur.
À partir de la documentation:
De la Java Langage de Spécification, section 8.9.2:
Je pense que cela doit être une caractéristique de la langue. D'une part, pour créer un enum en faire un, et il n'a pas besoin de s'étendre Enum:
Qui, seule, est une fonctionnalité du langage, ou autre, vous devez pour ce faire:
Deuxièmement, la méthode,
Enum.valueOf(Class<T> enumType, String name)
, doit être produit par le compilateur lorsque vous utilisezmyEnum.valueOf(String name)
.C'est ce qui paraît tout à fait possible étant donné que la nouvelle
Enum
est une fonctionnalité du langage comme c'est une classe à étendre.