Java void-Methoden geben dies implizit zurück

20

Es gibt einige Diskussionen zu SO über Setter-Methoden, die "diesen" Typ zurückgeben. Und es sieht so aus, als ob Java 7 den Vorschlag hatte, diese ungültigen Methoden zurückzugeben. Aber dieser Vorschlag konnte es nicht zu Java 7 Features schaffen. Ich konnte nicht feststellen, ob dieser Vorschlag auf Java 8 oder höher verschoben wurde oder vollständig verworfen wurde. Ist es?

Siehe Link - /programming/31584/design-java-and-returning-self-reference-in-setter-methods

Tarun
quelle
3
Es ist sehr hilfreich, einige Links zu der Diskussion zu haben, die Sie in der Frage erwähnt haben, damit sie für andere hilfreich ist und ihnen hilft, die Frage besser zu verstehen.
ManuPK
habe meine Frage bearbeitet
Tarun

Antworten:

11

Ich kann anscheinend keine Quellen dafür finden, aber ich glaube, diese Funktion wurde komplett eingestellt. Es gibt zahlreiche Gründe, die mir einfallen:

  • Leistung - Jede voidMethode verfügt jetzt über einen zusätzlichen Rückgabe-Opcode, und jede Stelle, an der diese Methode aufgerufen wird, muss implizit angegeben werden, es popsei denn, sie verwendet tatsächlich eine Methodenverkettung

  • Abwärtskompatibilität - Durch Kompilieren mit dieser Funktion wird der Code plötzlich inkompatibel, da sich der Vertrag für jede voidMethode geändert hat

Natürlich kann dies auch vom Compiler implementiert werden ( aufrufende Methode an void? Sie meinten wahrscheinlich this, lassen Sie mich dies implizit hinzufügen ), wissen aber nicht, was die Nachteile dieses Ansatzes sind.

Tomasz Nurkiewicz
quelle
1
Der Compiler müsste diese Funktion unterstützen (damit der aufrufende Code kompiliert wird), und er könnte das aufgerufene Objekt speichern und erneut verwenden, ohne dass die aufrufende Methode geändert wird.
Peter Lawrey
Features für das OpenJDK dieser Art werden jetzt als JDK Enhancement Proposals (JEPs) behandelt und werden in der Tat nicht mehr aufgelistet (und ich habe es schon seit geraumer Zeit nicht mehr besprochen gesehen).
Martijn Verburg
3

Ich glaube nicht, dass dies jemals offiziell für die Inkarnation von Project COIN 2009 vorgeschlagen wurde. Diese Seite gibt vor , alle Vorschläge aufzulisten, und ich sehe keinen, der dem entspricht.

Wenn es nicht vorgeschlagen worden wäre, wäre es nicht in Betracht gezogen worden.

Stephen C
quelle