J'ai voté pour. En effet, je pense que les types énumérés du langage Java devraient fonctionner de la même façon que les types énumérés du langage Pascal.
En langage Pascal, les éléments d'un type énuméré sont naturellement ordonnés par l'ordre dans lequel ils sont déclarés. Si on écrit
type jours = ( lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche );
on a
lundi < mardi < mercredi < jeudi < vendredi < samedi < dimanche
A en juger la documentation du JDK 5 (http://java.sun.com/j2se/1.5.0/docs/...l#compareTo(E)), le type énuméré du Java a été pensé de la même façon que pour le langage Pascal.
Pourquoi n'aurions-nous pas simplement la même chose en Java ?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| enum Jour { LUNDI, MARDI, MERCREDI, JEUDI , VENDREDI, SAMEDI, DIMANCHE }
(...)
Jour jour1;
Jour jour2;
(...)
if (jour1 < jour2) {
(...)
}
if (jour1 < Jour.JEUDI) {
(...)
} |
Je vois que des gens ont soulevé la question de savoir quel sens donner à la comparaison entre les constantes d'un type énuméré. A mon avis, il n'y a pas de question à se poser et il n'y a pas de comparateur à implémenter. Je ne pense pas non plus que l'on puisse parler de notion de surcharge d'opérateur puisqu'il n'y a qu'un seul sens possible à donner à l'opérateur de comparaison.
Si on se trouve dans une situation où la notion d'ordre sur les éléments n'a pas de sens alors il ne faut pas utiliser une énumération mais un ensemble (concept qui n'impose pas la notion d'ordre).
Partager