Restituire Oggetti dai Metodi in Java
- In Java, è possibile restituire oggetti dai metodi, consentendo una maggiore flessibilità nella programmazione orientata agli oggetti.
- Un metodo può restituire un oggetto di qualsiasi tipo, inclusi i tipi di classe definite dall'utente.
- La restituzione di oggetti consente di creare nuovi oggetti basati su quelli esistenti, come dimostrato nel metodo
incrementaDiDieci()
. - Gli oggetti creati con
new
all'interno di un metodo continueranno a esistere finché esiste un riferimento a essi, grazie alla gestione della memoria di Java tramite il garbage collector.
Restituire Oggetti
Un metodo in Java può restituire qualsiasi tipo di dato, inclusi i tipi di classe che si possono creare.
Per esempio, nel programma seguente, il metodo incrementaDiDieci()
restituisce un oggetto in cui il valore di a
è dieci unità maggiore rispetto a quello dell'oggetto invocante.
// Restituire un oggetto.
class Test {
int a;
Test(int i) {
a = i;
}
Test incrementaDiDieci() {
Test temp = new Test(a + 10);
return temp;
}
}
class RestituisciOggetto {
public static void main(String[] args) {
Test ogg1 = new Test(2);
Test ogg2;
ogg2 = ogg1.incrementaDiDieci();
System.out.println("ogg1.a: " + ogg1.a);
System.out.println("ogg2.a: " + ogg2.a);
ogg2 = ogg2.incrementaDiDieci();
System.out.println("ogg2.a dopo il secondo incremento: "
+ ogg2.a);
}
}
L'output generato da questo programma è mostrato qui:
ogg1.a: 2
ogg2.a: 12
ogg2.a dopo il secondo incremento: 22
Come si può vedere, ogni volta che incrementaDiDieci()
viene invocato, viene creato un nuovo oggetto, e un riferimento a esso viene restituito alla routine chiamante.
Persistenza degli oggetti con new
Il programma precedente mette in evidenza un altro punto importante: poiché tutti gli oggetti sono allocati dinamicamente usando new
, non è necessario preoccuparsi che un oggetto esca dal contesto al termine del metodo in cui è stato creato.
L'oggetto continuerà a esistere finché esisterà un riferimento a esso da qualche parte nel programma. Quando non ci sono più riferimenti, l'oggetto verrà reclamato dal garbage collector al successivo ciclo di raccolta.