Cosa sono gli oggetti mutabili/immutabili e a cosa servono?  - 1

"Ciao, Amico!"

"Ciao Bilaabo!"

"Oggi Bilaabo vi parlerà di oggetti mutabili e immutabili .

"Gli oggetti che puoi cambiare dopo che sono stati creati sono chiamati mutabili ."

"Gli oggetti che non possono essere modificati dopo essere stati creati sono chiamati immutabili ."

"Cosa determina se posso cambiare un oggetto?"

"L'autore di una nuova classe può rendere immutabili gli oggetti di quella classe. Ad esempio, se rendi privati ​​tutti i setter, un oggetto avrà solo un costruttore e getter; ciò significa che sarà impossibile modificarlo dopo che è stato creato ."

"E che senso avrebbe?"

"Gli oggetti immutabili hanno molte proprietà utili, ma ne evidenzierò due che sono comuni a quasi tutti gli oggetti immutabili:"

1) Gli oggetti immutabili sono molto più facili da implementare rispetto agli oggetti mutabili.

2) Gli oggetti immutabili possono essere utilizzati liberamente su più thread contemporaneamente.

"Quando uno sviluppatore decide di scrivere una classe immutabile, di solito crea sia una versione mutabile che una versione immutabile della classe."

"Ma che senso ha scrivere due lezioni invece di una?"

"A volte ne vale la pena quando una versione immutabile di un oggetto sarà molto più semplice/veloce di una mutabile. Quindi, ne fanno due versioni. È un po' come ArrayList e LinkedList: entrambe sono liste, ma una è ottimizzata per scopi specifici, e la seconda per gli altri."

"Questo ha già più senso."

"Ci sono anche classi puramente immutabili, che non hanno una versione mutabile."

"Ma cosa succede se devo cambiare qualcosa in uno di quegli oggetti? Cosa puoi fare effettivamente con un oggetto immutabile?"

"Di solito, le classi immutabili contengono vari metodi che agiscono come se cambiassero l'oggetto, ma questi metodi semplicemente creano un nuovo oggetto e lo restituiscono, invece di cambiare l'oggetto stesso."

"Ecco alcuni esempi:"

codice java Descrizione
String s = "london";
String s2 = s.toUpperCase();
Di conseguenza, s contiene la stringa «london» e s2 contiene «LONDON»
Integer i = 1;
Integer j = i;
j++;
Ecco cosa succede realmente:
Integer i = new Integer(1);
Intero j = io;
j = new Integer(i.getInt()+1);

"La classe String è una classe immutabile. Tutti gli oggetti String sono immutabili, ma ciò non ci impedisce di lavorarci. Ad esempio, il metodo toUpperCase () della classe String converte una stringa in maiuscolo (ovvero sostituisce tutte le lettere minuscole con lettere maiuscole). Tuttavia, questo metodo non modifica la stringa stessa, ma restituisce una nuova stringa. Questa nuova stringa è identica alla prima tranne che tutti i caratteri sono maiuscoli (lettere maiuscole)."

"Anche la classe Integer è una classe immutabile. Tutti gli oggetti Integer sono immutabili. Ogni volta che cambiamo un oggetto Integer, in realtà stiamo creando un nuovo oggetto."

"Che interessante! Evviva, Bilaabo."

"Evviva per me! Evviva per Bilaabo!"