Los métodos nulos de Java devuelven esto implícitamente

20

hay un par de discusiones sobre SO sobre los métodos de establecimiento que devuelven "este" tipo. Y parece que Java 7 tenía la propuesta de métodos nulos para devolver esto. Pero esta propuesta no pudo llegar a las características de Java 7. No pude encontrar si esta propuesta se traslada a Java 8 o futuro o si se ha descartado por completo. ¿Lo es?

Enlace de referencia: /programming/31584/design-java-and-returning-self-reference-in-setter-methods

Tarun
fuente
3
Le agradeceríamos tener algunos enlaces a la discusión que ha mencionado en la pregunta, para que sea útil para otros y les ayude a entender la pregunta más.
ManuPK
edité mi pregunta
Tarun

Respuestas:

11

Parece que no puedo encontrar ninguna fuente de eso, pero creo que esta característica se eliminó por completo. Hay muchas razones por las que puedo pensar:

  • rendimiento : cada voidmétodo ahora tiene un código de operación de retorno adicional y cada lugar donde se llama a este método necesita implícito a popmenos que realmente use el encadenamiento de métodos

  • Compatibilidad con versiones anteriores : la compilación de esta característica hace que el código sea incompatible con versiones anteriores porque el contrato de cada voidmétodo ha cambiado

Por supuesto, esto también puede ser implementado por el compilador (¿ llamando al método void? Probablemente quisiste decir this, déjame agregar esto implícitamente ), no sé cuáles son las desventajas de este enfoque.

Tomasz Nurkiewicz
fuente
1
El compilador tendría que admitir esta característica (para que el código de llamada se compilara) y podría guardar el objeto llamado y usarlo nuevamente sin alterar el método de llamada.
Peter Lawrey
Las características de OpenJDK de esta naturaleza ahora se manejan como propuestas de mejora de JDK (JEP) y, de hecho, esto ya no aparece en la lista (y no lo he visto discutido en bastante tiempo).
Martijn Verburg el
3

No creo que esto se haya propuesto formalmente para la encarnación de 2009 del Proyecto COIN. Esta página pretende enumerar todas las propuestas, y no puedo ver una que corresponda.

Si no se propuso, no se habría considerado.

Stephen C
fuente