|
|||||||
| 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 :
Proposition 1 : Code :
Proposition 2 : 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 |
|
Membre éclairé
![]() |
J'avoue être contre, et c'est mon vote
Actuellement on doit faire attention à nos types, et faire figurer un transtypage incite - à mon humble avis - le développeur à faire attention à ce qu'il fait. De plus, les syntaxes proposées me font vite tourner la tête. Si je devais quand même choisir entre les deux syntaxes, je choisirai la n°1, pour le mot clef en minuscules. Bref, comme le bon vieux this, tous les this quoi. Pourquoi diable se retrouver avec des this et des This ? |
|
|
00
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : août 2004 Messages : 171 ![]() |
Bonjour
Tout d'abors merci pour ce débat intéressant Personnellement je suis plutot contre Quand tu dis même type, c'est pas plutot meme instance car des méthode comme String#toUpper() renvoi le même type mais pas la même instance, et dans ce cas l'utilisation de this serait conceptuellement faux. De plus casting devenant implicit, le developpeur se rendrait même plus compte du problème potentiel. Un peu comment quand on fait : Code :
|
||
|
|
00
|
|
|
#4 |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
J'ai voté pour à cette proposition ainsi qu'à la proposition 6, mais en fait j'hésite entre les deux...
Celle-ci a l'avantage d'être déclarative (on voit bien que la méthode retourne l'instance courante), mais cela doit être géré par la classe. La proposition 6 étend cela à toutes les méthodes retournant void, mais dans ce cas c'est les méthodes retournant le même type qui poseront problème @metalpetsFR : cela ne doit être utilisé qu'avec les méthodes utilisant return this et non pas une copie de l'objet comme c'est le cas des méthodes de String... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
00
|
|
|
#5 | ||
|
Membre habitué
![]() Inscription : juin 2004 Messages : 175 ![]() |
contre
le typage implicite est une bonne chose : on sait ce qu'on fait et puis si on y tiens on peut encore s'en sortir avec des generics Code :
__________________
En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche. (Jacques Rouxel : "Les shadoks") |
||
|
|
00
|
|
|
#6 | ||||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Mouais...
C'est une solution mais elle a encore plus de limite je trouve : On connait le type de T mais là on n'est pas sûr que cela correspond à this, alors que dans la proposition cela pourrait être vérifié par le compilateur. Je veux dire par là que j'attend de cette proposition qu'un code comme celui-ci génère une erreur : Code :
Dans ton exemple avec les Generics cela n'est pas garantit et le sens est donc un tout petit peu différent... De plus cela alourdit le code si on utilise directement Buffer : Code :
Buffer<Buffer> buffer = new Buffer<Buffer>(); Code :
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
||||
|
00
|
|
|
#7 | |
|
Membre habitué
![]() Inscription : juin 2004 Messages : 175 ![]() |
Citation:
pour l'ecriture avec des generics par contre tu as raison : c'est plus complexe et limitatif
__________________
En essayant continuellement on finit par réussir. Donc : plus ça rate, plus on a de chance que ça marche. (Jacques Rouxel : "Les shadoks") |
|
|
|
00
|
|
|
#8 | ||
|
Membre confirmé
![]() Inscription : janvier 2005 Messages : 229 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Oui mais dans ce cas c'est toutes les classes qui retourne déjà le même type qui poseront problème, car passer de
à doit poser pas mal de problème de compatibilité... Alors qu'on peut penser que passer à : devrait être valide si les types correspondent... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
00
|
|
|
#10 |
|
Membre confirmé
![]() Inscription : janvier 2005 Messages : 229 ![]() |
Ha oui, encore cette satané compatibilité !
C'est bête quand même … mais tu as certainement raison. |
|
|
00
|
|
|
#11 |
![]() Consultant informatique Inscription : février 2004 Messages : 1 180 ![]() |
Contre,
J'ai du mal a voir ça en application et ça fait doublon avec le chainage des appels que je n'aime pas non plus.. C'est moins pire que le chainage et certaines méthodes retournent déjà l'objet this (avec un type fixe par contre) donc ça ne change pas énormément de choses, mais je trouve qu'en cas d'héritage c'est bof bof a suivre et quid des effets de bords qui pourraient être possible (enfin ils seraient peut-être possible aussi aujourd'hui) Un petit contre finalement, je hurlerai pas si ça passe Bulbo
__________________
[Java] [NetBeans] [CVS] La FAQ Java Merci de ne pas me poser de questions techniques par MP. !! J'aurais voulu être une conserve !! |
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Justement l'intérêt vient en cas d'héritage !
Actuellement pour éviter ce problème il faut redéfinir toutes les méthodes parentes dans la classe fille en changeant le type de retour (grace à la covariance), par exemple : Code :
Avec le type This en retour cela serait inutile et on est sûr qu'elles retourneront bien this (enfin c'est comme cela que je l'ai compris en tout cas). a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
||
|
00
|
|
|
#13 | ||
|
Membre du Club
![]() Inscription : août 2004 Messages : 171 ![]() |
Syntaxiquement on ne peut pas vérifier le type réel de l'objet meme si c'est la meme instance
Code :
|
||
|
|
00
|
|
|
#14 | |||||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
Code :
Code :
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|||||
|
00
|
|
|
#15 |
![]() Consultant informatique Inscription : février 2004 Messages : 1 180 ![]() |
Je suppose qu'il n'y aurait pas de return dans ce type de méthode, donc on serait sur de retourner this.
Pour faire plaisir, un pour du bout des lèvres, même si je ne vois pas bien l'intérêt.. a part éviter des casts ou des redéfinitions appelant simplement super.. Bulbo
__________________
[Java] [NetBeans] [CVS] La FAQ Java Merci de ne pas me poser de questions techniques par MP. !! J'aurais voulu être une conserve !! |
|
|
00
|
|
|
#16 | |||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
Tu peux prendre l'exemple des vrai classes Buffer -> ByteBuffer -> MappedByteBuffer : http://javasearch.developpez.com/j2s...io/Buffer.html http://javasearch.developpez.com/j2s...yteBuffer.html http://javasearch.developpez.com/j2s...yteBuffer.html Afin de permettre le chainage la plupart des méthodes de ces classes renvoi le type courant. Le problème c'est que le chainage n'est pas toujours possible comme on le souhaite car si on appelle une méthode de la classe parente on "perd" le type courant et on a à la place le type parent : Code :
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|||
|
00
|
|
|
#17 |
![]() Consultant informatique Inscription : février 2004 Messages : 1 180 ![]() |
Pas taper j'ai changé mon vote déjà .. enfin dans le topic, je peux pas changer le sondage malheureusement
Sérieusement, je suis d'accord avec tes arguments adiGuba, j'aurais du tourner mon clavier sept fois dans ma bouche avant de répondre a ce sondage mais fai pfa pfafile ![]() Bulbo
__________________
[Java] [NetBeans] [CVS] La FAQ Java Merci de ne pas me poser de questions techniques par MP. !! J'aurais voulu être une conserve !! |
|
|
00
|
|
|
#18 |
![]() ![]() |
si on veut que ca soit utile, il faut aussi revoir la definition d'un bean, sinon, on encore le meme probleme avec les seters qui ne peuvent pas renvoyer this pour etre conformes
__________________
Blog blog = new MyBlog(); |
|
00
|
|
|
#19 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 657 ![]() |
Citation:
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
|
00
|
|
|
#20 |
|
Membre expérimenté
![]() |
Cette proposition m'interpelle car je n'arrive pas a trancher.
L'objectif est sensiblement le même que la proposition d'invocations chainées (pour laquelle je suis contre dans sa forme proposée). Je vais voter contre, mais il est interressant de converger les idées et de proposer une forme à l'invocation chainée qui évite toute ambiguitée. |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com