Métodos Java void retornando implicitamente esse

20

Há algumas discussões sobre SO sobre métodos setter retornando "este" tipo. E parece que o java 7 teve a proposta de métodos void retornando isso. Mas esta proposta não conseguiu chegar aos recursos do java 7. Não foi possível encontrar se esta proposta foi movida para o java 8 ou futuro ou se foi completamente descartada. É isso?

Ref link - /programming/31584/design-java-and-returning-self-reference-in-setter-methods

Tarun
fonte
3
Seria bom ter alguns links para a discussão que você mencionou na pergunta, para que seja útil para outras pessoas e os ajude a entender melhor a questão.
ManuPK
editou minha pergunta
Tarun

Respostas:

11

Não consigo encontrar nenhuma fonte disso, mas acredito que esse recurso foi completamente descartado. Existem inúmeras razões pelas quais posso pensar:

  • performance - cada voidmétodo agora tem um código de retorno de retorno extra e todo lugar em que esse método é chamado precisa implícito, a popmenos que ele realmente use o encadeamento de métodos

  • compatibilidade com versões anteriores - compilar com esse recurso repentinamente torna o código incompatível com versões anteriores, porque o contrato de todos os voidmétodos mudou

É claro que isso também pode ser implementado pelo compilador ( chamando o método void? Você provavelmente quis dizer this, deixe-me adicionar isso implicitamente ), não sabe quais são as desvantagens dessa abordagem.

Tomasz Nurkiewicz
fonte
1
O compilador precisaria suportar esse recurso (para que o código de chamada fosse compilado) e poderia salvar o objeto chamado e usá-lo novamente sem que o método de chamada fosse alterado.
Peter Lawrey
Recursos para o OpenJDK dessa natureza agora são tratados como JEP (Enhancement Proposals - JEPs) e, de fato, isso não está mais listado (e eu não o vejo discutido há algum tempo).
Martijn Verburg
3

Não acredito que isso tenha sido formalmente proposto para a encarnação de 2009 do Projeto COIN. Esta página pretende listar todas as propostas e não consigo ver uma que corresponda.

Se não fosse proposto, não teria sido considerado.

Stephen C
fonte