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


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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.