Méthodes Java void renvoyant implicitement ce

20

il y a quelques discussions sur SO sur les méthodes setter retournant "ce" type. Et on dirait que java 7 avait la proposition de méthodes void renvoyant ceci. Mais cette proposition n'a pas pu atteindre les fonctionnalités de Java 7. Je n'ai pas pu trouver si cette proposition est déplacée vers java 8 ou future ou si elle a été complètement rejetée. C'est ça?

Lien de référence - /programming/31584/design-java-and-returning-self-reference-in-setter-methods

Tarun
la source
3
Il sera heureux d'avoir des liens vers la discussion que vous avez mentionnée dans la question, afin qu'elle soit utile pour les autres et les aide à mieux comprendre la question.
ManuPK
modifié ma question
Tarun

Réponses:

11

Je n'arrive pas à trouver de sources à cela, mais je pense que cette fonctionnalité a été complètement supprimée. Il y a de nombreuses raisons auxquelles je peux penser:

  • performances - chaque voidméthode a maintenant un opcode de retour supplémentaire et chaque endroit où cette méthode est appelée a besoin implicitement popsauf si elle utilise réellement le chaînage de méthode

  • rétrocompatibilité - la compilation avec cette fonctionnalité rend soudainement le code rétrocompatible car le contrat de chaque voidméthode a changé

Bien sûr, cela peut également être implémenté par le compilateur ( méthode d'appel activée void? Vous vouliez probablement dire this, permettez-moi d'ajouter ceci implicitement ), je ne sais pas quels sont les inconvénients de cette approche.

Tomasz Nurkiewicz
la source
1
Le compilateur devrait prendre en charge cette fonctionnalité (afin que le code appelant se compile) et il pourrait enregistrer l'objet appelé et l'utiliser à nouveau sans que la méthode d'appel soit modifiée.
Peter Lawrey
Les fonctionnalités de l'OpenJDK de cette nature sont désormais traitées comme des propositions d'amélioration JDK (JEP) et, en effet, elles ne sont plus répertoriées (et je ne l'ai pas vu discuté depuis un certain temps).
Martijn Verburg
3

Je ne crois pas que cela ait jamais été formellement proposé pour l'incarnation de 2009 du projet COIN. Cette page prétend énumérer toutes les propositions, et je ne vois pas celle qui correspond.

S'il n'avait pas été proposé, il n'aurait pas été pris en considération.

Stephen C
la source