Précédent   Forum du club des développeurs et IT Pro > Java > Communauté Java > Débats

Débats Les débats et sondages sur le langage et les technologies Java

Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Affichage des résultats du sondage: Etes vous pour ou contre cette proposition ?
Pour 81 30,11%
Contre 188 69,89%
Votants: 269. Vous ne pouvez pas participer à ce sondage.

Publicité
'
Réponse
 
Outils de la discussion
Vieux 16/12/2007, 20h08   #1
vbrabant
Expert Confirmé Sénior
 
Inscription : mai 2003
Messages : 3 293
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 3 293
Points : 7 670
Points : 7 670
Par défaut JDK 7: Proposition 3 : Comparer les énumérations

Aujourd'hui :

Code java :
1
2
3
4
5
enum Size { SMALL, MEDIUM, LARGE }

if (mySize.compareTo(yourSize) >= 0)
    System.out.println(“You can wear my pants.”);

Demain :

Code java :
1
2
3
4
5
enum Size { SMALL, MEDIUM, LARGE }

if (mySize > yourSize)
    System.out.println(“You can wear my pants.”);
__________________
Vincent Brabant

Ne pas me contacter par MP ni par mail pour des questions techniques. Ma liste d'amis restera vide.
vbrabant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 01h53   #2
yann2
Membre Expert
 
Avatar de yann2
 
Homme
Ingénieur développement logiciels
Inscription : mai 2004
Messages : 792
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2004
Messages : 792
Points : 1 244
Points : 1 244
Bonsoir

Je suis pour mais les cas d'utilisation semblent très limités, non ?

Qui irait comparer la classique énumération saison {AUTUMN, SPRING, WINTER, SUMMER} ?

yann
__________________
duck and cover
yann2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 01h58   #3
gronono
Membre éprouvé
 
Avatar de gronono
 
Inscription : novembre 2003
Messages : 452
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : novembre 2003
Messages : 452
Points : 408
Points : 408
Envoyer un message via MSN à gronono
Bonjour,

Je suis contre. Qu'est ce qui définit la notion d'ordre pour une énumération ?

Par exemple si j'ai une énumération des modes de paiement:
ESPECES, CHEQUES, CB.

Pourquoi ESPECES < CHEQUES me donnerai true (ou false) ?????

Si on veut un opérateur de comparaison, il faut l'implémenter et non se baser sur la déclaration.

A+
Gronono
gronono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 09h11   #4
Napalm51
Membre confirmé
 
Inscription : septembre 2007
Messages : 282
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 282
Points : 282
Points : 282
Contre, pour les même raisons que gronono.
Napalm51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 10h04   #5
n!co
Membre émérite
 
Avatar de n!co
 
Inscription : février 2004
Messages : 831
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : février 2004
Messages : 831
Points : 845
Points : 845
Cela n'invente rien non plus !
http://java.sun.com/j2se/1.5.0/docs/...ml#compareTo(E)

La question serait plus de savoir si cet opérateur se basera sur la méthode compareTo() ?
__________________
Netbeans account : nico@share.java.net
Merci de ne pas poser de questions techniques par MP
n!co est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 10h11   #6
austin P.
Membre habitué
 
Avatar de austin P.
 
Inscription : juin 2004
Messages : 175
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : juin 2004
Messages : 175
Points : 142
Points : 142
plutot contre

à mon sens la methode compareTo() à plus de sens que l'operateur > ou <

comme le dit gronono la sémantique est plus importante
__________________
En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche. (Jacques Rouxel : "Les shadoks")
austin P. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 10h18   #7
gronono
Membre éprouvé
 
Avatar de gronono
 
Inscription : novembre 2003
Messages : 452
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : novembre 2003
Messages : 452
Points : 408
Points : 408
Envoyer un message via MSN à gronono
Citation:
Envoyé par n!co Voir le message
Cela n'invente rien non plus !
http://java.sun.com/j2se/1.5.0/docs/...ml#compareTo(E)

La question serait plus de savoir si cet opérateur se basera sur la méthode compareTo() ?
Contrairement à la méthode compareTo, l'opérateur < n'a pas de javadoc. Et donc ne précise pas que l'ordre est l'ordre des déclarations.

Je pense que ce n'est pas une bonne chose qu'une énumération implémente Comparable. on devrait pouvoir le faire à la demande comme pour les autres classes.

D'ailleurs à partir de maintenant, je vais systèmatiquement rédefinir cette méthode pour renvoyer une UnsupportedOperationException.

A+
Gronono
gronono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 10h58   #8
OButterlin
Modérateur
 
Avatar de OButterlin
 
Homme
Inscription : novembre 2006
Messages : 5 087
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : novembre 2006
Messages : 5 087
Points : 5 823
Points : 5 823
Ben, j'aime pas, je trouve que ça ne facilite pas la lisibilité du code.
Je préfère
Code :
1
2
 
if ( mySize > size.LARGE )
Dans tous les cas, je ne comprends pas l'exemple... quel lien entre mySize, yourSize et Size ?
D'un autre côté, je n'ai jamais utilisé d'enum, ça vient certainement de là...
OButterlin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 15h04   #9
verbose
Membre expérimenté
 
Inscription : juillet 2007
Messages : 729
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 729
Points : 530
Points : 530
J'ai voté pour, mais en y réfléchissant à deux fois, je suis plutôt contre pour les même raisons que gronono.
verbose est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 16h08   #10
Jester
Membre chevronné
 
Avatar de Jester
 
Inscription : septembre 2003
Messages : 742
Détails du profil
Informations forums :
Inscription : septembre 2003
Messages : 742
Points : 785
Points : 785
J'ai voté contre, la sémantique de > n'est pas valide pour toutes les enum.

Après je serais bien pour la surcharge d'opérateur mais c'est un autre débat.
Jester est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 17h26   #11
le y@m's
Rédacteur/Modérateur
 
Avatar de le y@m's
 
Homme Yann D'Isanto
Ingénieur développement logiciels
Inscription : février 2005
Messages : 2 642
Détails du profil
Informations personnelles :
Nom : Homme Yann D'Isanto
Âge : 30
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2005
Messages : 2 642
Points : 6 157
Points : 6 157
Je suis contre pour les mêmes raisons que celles énoncées précédemment.

Cependant, je serais d'accord si cette fonctionnalité était optionnelle.
Pouvoir comparer des enums est intéressant, mais cela dépend de leur implémentation et il me semble donc primordiale que ce soit le développeur qui spécifie explicitement si une enum est comparable (via un mot clé ou un implements Comparable ou autre).
__________________
Je ne répondrai à aucune question technique par MP.

Pensez aux Tutoriels et aux FAQs avant de poster (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
Enfin, quand une solution a été trouvée à votre problème
pensez au tag

Cours Dvp : http://ydisanto.developpez.com
Blog : http://yann-disanto.blogspot.com/
Page perso : http://yann-disanto.fr
le y@m's est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 19h00   #12
elitost
Rédacteur
 
Avatar de elitost
 
Homme Eric REBOISSON
Consultant informatique
Inscription : septembre 2003
Messages : 2 032
Détails du profil
Informations personnelles :
Nom : Homme Eric REBOISSON
Âge : 35
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Consultant informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2003
Messages : 2 032
Points : 7 357
Points : 7 357
Envoyer un message via ICQ à elitost Envoyer un message via AIM à elitost Envoyer un message via MSN à elitost Envoyer un message via Yahoo à elitost Envoyer un message via Skype™ à elitost
Une lisibilité bizarre pour cette option.
elitost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 23h35   #13
nicorama
Membre Expert
 
Avatar de nicorama
 
Inscription : juillet 2006
Messages : 765
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 765
Points : 1 054
Points : 1 054
Citation:
Envoyé par gronono Voir le message
Contrairement à la méthode compareTo, l'opérateur < n'a pas de javadoc.
+1
Plus j'avance dans les propositions, plus je suis épaté par les contres-arguments soulevés. Ca sent le vécu quand même
__________________
Robusta Web Library : Clients RESTful open source pour Java, Android & GWT.
API Simple et Productive. Avec style.
nicorama est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2007, 23h57   #14
yann2
Membre Expert
 
Avatar de yann2
 
Homme
Ingénieur développement logiciels
Inscription : mai 2004
Messages : 792
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mai 2004
Messages : 792
Points : 1 244
Points : 1 244
bonsoir,

La structure de contrôle foreach n'a pas de Javadoc et on est bien content de pouvoir l'utiliser (pourtant la classe Iterable et la méthode iterator ont une javadoc). Le tout est de connaitre le mécanisme qu'il y a derrière !

Et la javadoc de compareTo de la classe Enum est claire !

[edit]
et en fait j'aimerai bien que cette fonctionnalité (sauf pour le == ) soit étendue à toutes les classes qui implémentent Comparable !! M'enfin je lance ça comme ça sans en avoir étudier les tenants et aboutissants On pourrait, par exemple comparer des objets de type date le plus naturellement du monde.
[/edit]

yann
__________________
duck and cover
yann2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 00h29   #15
gronono
Membre éprouvé
 
Avatar de gronono
 
Inscription : novembre 2003
Messages : 452
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : novembre 2003
Messages : 452
Points : 408
Points : 408
Envoyer un message via MSN à gronono
En fait, il y a deux sujets différents dans cette proposition.

Si l'opérateur < revient à faire .compareTo alors je suis plutot pour. On pourrait ainsi comparé deux objets et je pense que c'est même plus lisible.
Par exemple si j'ai un objet Personne qui implémente Comparable alors je peux faire :
Code :
1
2
3
4
5
6
 
Personne p1 = ...
Person p2 = ..
if (p1 < p2) {
 // Faire qqchose
}
Serait équivalent au code :
Code :
1
2
3
4
5
6
 
Personne p1 = ...
Person p2 = ..
if (p1.compareTo(p2)) {
 // Faire qqchose
}
Le second sujet est que les énumérations implémentent Comparable. Sur ce point je suis contre pour les raisons evoquées ci-dessus.

A+
Gronono
gronono est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 09h07   #16
natha
Expert Confirmé
 
Avatar de natha
 
Inscription : janvier 2006
Messages : 2 344
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : janvier 2006
Messages : 2 344
Points : 2 861
Points : 2 861
Ca risque de devenir ambigüe. Je suis contre également.
__________________
Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
De la bonne manière de poser une question (et de répondre).
Je ne fais pas de service par MP. Merci (...de lire les règles...).
Ma page dvp.com
natha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 09h16   #17
woodwai
Rédacteur
 
Inscription : juillet 2002
Messages : 346
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juillet 2002
Messages : 346
Points : 695
Points : 695
Pour mais à condition que ce soit basé sur compareTo comme on le fait déjà pour le tri automatique des Collection.

Ça reviendrait à ajouter un compareTo dans la class Object (comme le equals) qui serait par défaut une comparaison du hashCode, on aurrait ensuite les comparateurs >, <, <=, >= qui se baserait sur la valeur retourné par le compareTo.

En fait, c'est quand même bien compliqué donc j'hésite ...
__________________
Venez visiter mon site sur developpez ou mon blog perso
woodwai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 10h51   #18
ludosoft
Membre habitué
 
Avatar de ludosoft
 
Homme Ludovic Martin
Chef de projet technique
Inscription : juillet 2002
Messages : 95
Détails du profil
Informations personnelles :
Nom : Homme Ludovic Martin
Âge : 32
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Chef de projet technique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2002
Messages : 95
Points : 116
Points : 116
Envoyer un message via MSN à ludosoft Envoyer un message via Skype™ à ludosoft
Pour moi ça craint aussi. Faut pas vouloir faire avec un type énuméré ce qu'ont ferait avec un entier.

Code :
1
2
enum Humain { HOMME, FEMME, BB }
HOMME+FEMME=BB ?
ludosoft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 11h37   #19
Traroth2
Expert Confirmé
 
Inscription : décembre 2003
Messages : 1 663
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 663
Points : 3 337
Points : 3 337
Contre. En fait, c'est le retour des méthodes operator du C++, avec leur cortège de défauts. Le principal : la yntaxe créé la confusion, et on a tendance à y mettre un contenu implicite qui n'est peut-être pas le contenu de l'operateur. Les bénéfices étant par ailleurs plutôt faibles (écriture un peu plus compacte), je vote contre sans hésiter.
__________________
Les brevets ? Le type qui a inventé l'eau chaude doit être grave blindé de thunes !
Traroth2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 12h54   #20
xavlours
Membre Expert
 
Avatar de xavlours
 
Inscription : février 2004
Messages : 1 833
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 1 833
Points : 2 154
Points : 2 154
Pour moi c'est une forme de surcharge des opérateurs, qui a été refusée dès le début de java, donc pourquoi s'y mettre maintenant ? Les interfaces de Comparator et Comparable sont utiles et bien faites, et trouve ça plus modulaire : on choisit nous même le Comparator pour trier une liste, par exemple. Cette proposition incite les développeurs à fournir des classes qui se basent directement sur l'opérateur.
__________________
"Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.
xavlours est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h23.


 
 
 
 
Partenaires

Hébergement Web