I metodi void Java restituiscono implicitamente questo


20

ci sono un paio di discussioni su SO sui metodi setter che restituiscono "questo" tipo. E sembra che Java 7 avesse la proposta di metodi vuoti per restituirlo. Ma questa proposta non è riuscita a raggiungere le funzionalità di Java 7. Non sono riuscito a capire se questa proposta è stata spostata su Java 8 o in futuro o se è stata completamente scartata. È?

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


3
Sarà gratificante avere alcuni collegamenti alla discussione che hai citato nella domanda, in modo che sia utile per gli altri e li aiuterà a capire meglio la domanda.
ManuPK,

ha modificato la mia domanda
Tarun

Risposte:


11

Non riesco a trovarne alcuna fonte, ma credo che questa funzione sia stata completamente abbandonata. Ci sono numerose ragioni a cui posso pensare:

  • prestazioni : ogni voidmetodo ha ora un codice operativo di ritorno aggiuntivo e ogni luogo in cui questo metodo viene chiamato deve essere implicito a popmeno che non utilizzi effettivamente il concatenamento del metodo

  • compatibilità con le versioni precedenti : la compilazione con questa funzione rende improvvisamente incompatibile il codice con le versioni precedenti poiché il contratto di ogni voidmetodo è cambiato

Naturalmente questo può essere implementato anche dal compilatore ( metodo di chiamata su void? Probabilmente intendevi this, lasciami aggiungere implicitamente ), non so quali sono gli svantaggi di questo approccio.


1
Il compilatore dovrebbe supportare questa funzione (in modo da compilare il codice chiamante) e potrebbe salvare l'oggetto chiamato e riutilizzarlo senza che il metodo chiamante venga modificato.
Peter Lawrey,

Funzionalità di OpenJDK di questo tipo sono ora gestite come JDK Enhancement Proposals (JEPs) e in effetti questo non è più elencato (e non l'ho visto discusso da un po 'di tempo).
Martijn Verburg,

3

Non credo che questo sia mai stato formalmente proposto per l'incarnazione del 2009 del Progetto COIN. Questa pagina pretende di elencare tutte le proposte e non riesco a vederne una corrispondente.

Se non fosse stato proposto, non sarebbe stato preso in considerazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.