Je lis je lis efficacement Java écrit par Joshua Bloch Publié en 2008 et un conseil consiste à remplacer les constructions ENUM avec des classes. Voici l'exemple indiqué à partir du livre. Ma question est que Java prend maintenant en charge le type Enum, est-il toujours une bonne idée d'utiliser l'approche ci-dessus? Voici l'exemple de type Java Enum. P> public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
3 Réponses :
Le livre "Java" efficace a été écrit bien avant l'introduction de Enum code> s dans la langue, je vous recommande donc d'utiliser la fonction
Enum code> à la place. Heureusement, Java
Enum code> s est très polyvalent, vous pouvez donc suivre le conseil de Joshua à l'aide de la fonctionnalité
ENUM CODE>:
public enum Day {
SUNDAY("Sunday", 0)
, MONDAY("Monday", 1)
, TUESDAY("Tuesday", 2)
, WEDNESDAY("Wednesday", 3)
, THURSDAY("Thursday", 4)
, FRIDAY("Friday", 5)
, SATURDAY("Saturday", 6);
private String name;
private int ordinal;
public String getName() { return name; }
public int getOrdinal() { return ordinal; }
public Day(String name, int ordinal) {
this.name = name;
this.ordinal = ordinal;
}
}
Les énumîtres sont une construction assez utile aussi.
Il convient de noter que la 2e édition couvre l'utilisation d'Enums.
Merci Dasblinkenlight, votre exemple est très utile.
Pourquoi l'ordinal ici? Enums ont une méthode d'origine intégrée () qui fait exactement ce que vous faites.
@fge C'est seulement une illustration - je voulais ajouter un deuxième paramètre à passer au constructeur, pour illustrer le point que vous pouvez transmettre plusieurs paramètres. Le "jour de la semaine" Enum code> a trop peu de choses associées à celle-ci, cependant, j'ai donc décidé d'ajouter de la mienne.
@dasblinkenlight j'ai aussi une question liée à Enums ici . Voulait voir si nous pouvons représenter cela facilement avec des énums ou non.
Je pense que l'idée est exactement opposée. Si vous avez une structure enum, utilisez Votre exemple de classe n'est pas exactement costume à l'énum que vous avez écrit. Tout d'abord, il ne peut pas être compilé car il contient plusieurs champs nommés Enum code>. P>
clubs code>. Deuxièmement, Enum contient des journées qui ne sont pas mentionnées dans votre classe. p>
Oups! Vous avez attrapé ma faute de frappe.
Autant que je sache, Java compile Enum-S à Dernière finale statique publique code>.
Vous pouvez vérifier cela en affichage des fichiers Enum .Class avec
Javap code> (
Seulement si le code source n'a pas d'importance, et je dirais que la source est très importante.
Enums en Java sont des cours.
Pour une fonctionnalité de base enum, il n'y a aucune raison de ne pas utiliser de simple
Enum code> s. Il y a quelques petites modifications avancées que vous ne pouvez pas faire avec Enums où le modèle d'énumération de type peut encore être appliqué.
Lisez la 2e édition du livre, cela en vaut vraiment la peine, car il couvre les nouvelles fonctionnalités Java.
Dans le livre, il se réfère à la construction «C» Enum, pas la Java Enum.