|
|||||||
| Débats Les débats et sondages sur le langage et les technologies Java |
|
|
Publicité ' | |||||||||||||||||
|
|
|
Outils de la discussion |
|
|
#1 | ||||
|
Expert Confirmé Sénior
![]() ![]() Inscription : mai 2003 Messages : 3 293 ![]() |
Aujourd'hui :
Code :
Code :
__________________
Vincent Brabant Ne pas me contacter par MP ni par mail pour des questions techniques. Ma liste d'amis restera vide. |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Oui : a noter que cela ne concerne pas seulement les Collections génériques mais n'importe quelles méthodes paramétrées
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
00
|
|
|
#3 |
|
Membre émérite
![]() ![]() Inscription : février 2004 Messages : 831 ![]() |
J'ai voté OK, mais avec quelques intérrogations :
1. Collections.emptySet() retourne une liste immuable donc pas de soucis en cas d'essaye d'ajout d'un element quelconque à cette liste ? 2. Le "foreach" ne risque pas de poser problème ?
__________________
Netbeans account : nico@share.java.net Merci de ne pas poser de questions techniques par MP |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : janvier 2005 Messages : 229 ![]() |
Je trouve l'exemple mal formulé en fait. Je pense avoir compris que la fonction emptySet collée dans l'exemple du code provient en fait de Collections.
Bref, je n'en ai jamais eu l'utilité, donc je ne me rend pas compte de la gène occasionné. Donc je ne vote pas |
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : novembre 2006 Messages : 5 087 ![]() |
Bof, on pourrait utiliser quelque chose dans le genresi le point 1 est OK
|
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() |
J'ai pas voté parceque je ne vois pas vraiment l'utilité de ça !
si quelqu'un a un exemple plus concret |
|
|
00
|
|
|
#7 | |||||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
Code :
public static <T extends Comparable<? super T>> void sort(List<T> list) { Code :
En fait on n'est obligé d'indiquer le paramétrage qu'en cas d'ambigüité du compilateur, mais en règle général c'est assez rare... Le problème avec emptySet() (et les autres méthodes du même type), c'est que le compilateur ne peut se baser que sur le type de retour et qu'il est assez limité. emptySet() est déclaré de la manière suivante : Code :
public static final <T> Set<T> emptySet() { Code :
Set<String> set = Collections.emptySet(); selon le type de la variable qui va recevoir la valeur de retour. Par contre lorsque tu utilises une méthode, cela ne marche plus : Code :
Code :
method( Collections.emptySet() ); // BAD Pourtant dans ce cas le compilateur pourrait très bien utiliser le type du paramètre de la méthode pour déterminer le paramétrage à utiliser... Cette proposition consiste en fait à simplement faire en sorte que le compilateur utilise également le type des paramètres qui reçoivent le retour d'une méthode... @ n!co 1. La modficiation de emptySet() ou autre renvoi une exception 2. foreach ne pose aucun problème (on n'y rentre tout simplement pas). a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|||||
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Inscription : janvier 2005 Messages : 229 ![]() |
Merci adibuga pour ces éclaircissements. Du coup, je vote pour, car ça ne bouleverse rien de manière inquiétante, et que ça apporte un petit plus. J'y repenserai si je tombe sur ce cas rare
|
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() ![]() Inscription : février 2004 Messages : 1 833 ![]() |
J'ai voté pour, parce que l'explication d'adiguba m'a fait mal à la tête et que je ne veux plus jamais avoir à me poser cette question
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
00
|
|
|
#11 | |
|
Membre Expert
![]() ![]() |
Citation:
__________________
En premier lieu, utilisez un moteur de recherche. En second lieu, postez sur le forum adéquat ! |
|
|
00
|
|
|
#12 |
|
Membre actif
![]() Inscription : juin 2003 Messages : 138 ![]() |
C'est du sucre syntaxique,il y a des évolutions qui sont plus importantes comme la facilitation de l'écriture des classes anonymes ou l'ajout des closures.
|
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() |
ma tête fais mâle de cette exemple.
|
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : août 2002 Messages : 67 ![]() |
Je ne vois pas du tout l'intérêt, le type générique dépend de l'usage que l'on en fait?
Encore une fois, ça n'encourage pas l'utilisation d'interfaces dans les déclarations génériques, et le code devient moins clair. Inutile, à mon avis, donc. |
|
|
00
|
|
|
#15 | ||||||||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Heu... J'ai l'impression que mon explication a embrouillé tout le monde... je vais essayer de faire plus clair.
Prenons une méthode paramétrée, par exemple : Code :
Code :
Code :
En effet dans la plupart des cas elle est inutile puisque le compilateur arrive à détecter implicitement le type paramétré à utiliser :
Seulement ce dernier cas est un peu limite car il ne vérifie pas la concordance des types si le retour est passé à une méthode, par exemple si j'ai une méthode comme ceci : Code :
Code :
setList( Tools.createList() ); // Ne compile PAS Code :
setList( Tools.<String>createList() ); Pour moi il ne s'agit pas vraiment d'une nouvelle proposition mais plutôt d'un oubli lors des spécifications des Generics... bref une correction de bug ! a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
||||||||
|
00
|
|
|
#16 |
|
Membre du Club
![]() |
merci adiGua de cette explication
|
|
|
00
|
|
|
#17 |
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 818 ![]() |
J'ai voté pour. D'ailleurs je pensais que cette fonctionnalité etait déja implémentée depuis java 5.
![]() Comme dit adiGuba, ca ressemble plus a un "oubli" qu'a une évolution.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
00
|
|
|
#18 | |||||||||||
|
Membre du Club
![]() Inscription : août 2002 Messages : 67 ![]() |
Citation:
D'autant que si on utilise les génériques, on pourrait tout aussi bien avoir la méthode Code :
Code :
Nos 2 types implémentants Vehicule: Code :
Code :
Code :
J'attends vos réactions et corrections syntaxiques si nécessaire. |
|||||||||||
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() ![]() Inscription : février 2004 Messages : 1 833 ![]() |
Dans ton cas, il serait de toutes façons nécessaire de garder la précision du type, puisque la méthode getInstance peut retourner n'importe quel type. Par contre, si tu précises :
Code :
public <T extends Vehicule> T getInstance() {...} |
|
|
00
|
|
|
#20 |
|
Membre confirmé
![]() |
mouais bof je prefere que ca reste encore un peu verbeux .... c'est juste un petit plus
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com