logo

Mutable i immutable a Java

Java és un llenguatge de programació orientat a objectes. Com que és un llenguatge de programació orientat a objectes, tots els seus mètodes i mecanismes giren al voltant dels objectes. Un concepte basat en objectes és mutable i immutable en Java . Els objectes en Java són mutables o immutables; depèn de com es pot iterar l'objecte.

En aquesta secció, parlarem dels objectes mutables i immutables a Java. A més, veurem la diferència entre ells.

Què són els objectes mutables

Els objectes mutables són objectes el valor dels quals es pot canviar després de la inicialització. Podem canviar els valors de l'objecte, com ara el camp i els estats, després de crear l'objecte. Per exemple, Java.util.Date , StringBuilder , StringBuffer , etc.

Quan fem un canvi en els objectes mutables existents, no es crearà cap objecte nou; en canvi, alterarà el valor de l'objecte existent. Les classes d'aquests objectes proporcionen mètodes per fer-hi canvis.

Els Getters i Setters ( mètodes get() i set() ) estan disponibles en objectes mutables. L'objecte Mutable pot ser o no segur per a fils.

com obrir un fitxer en java

Què són els objectes immutables

Els objectes immutables són objectes el valor dels quals no es pot canviar després de la inicialització. No podem canviar res un cop creat l'objecte. Per exemple, objectes primitius com int, llarg , flotar , doble , totes les classes heretades, Classe d'embolcall , Classe de corda , etc.

En poques paraules, immutable significa no modificat o inalterable. Un cop creats els objectes immutables, els seus valors i estat no es poden canviar.

Només els Getters (mètode get()) estan disponibles, no els Setters (mètode set()) per a objectes immutables.

Vegem com crear classes per a objectes mutables i immutables.

Com crear una classe mutable

Les dues coses següents són essencials per crear una classe mutable:

  • Mètodes per modificar els valors del camp
  • Getters i Setters dels objectes

Considereu l'exemple següent de la classe mutable:

somriure més bonic
 public class JtpExample { private String s; JtpExample(String s) { this.s = s; } public String getName() { return s; } public void setName(String coursename) { this.s = coursename; } public static void main(String[] args) { JtpExample obj = new JtpExample('JavaTpoint'); System.out.println(obj.getName()); // Here, we can update the name using the setName method. obj.setName('Java Training'); System.out.println(obj.getName()); } } 

Sortida:

 JavaTpoint Java Training 

A partir de l'exemple anterior, estem canviant el valor del nom mitjançant el mètode setName.

Com crear una classe immutable

Les coses següents són essencials per crear una classe immutable:

  • Classe final, que es declara definitiva perquè no es pugui ampliar.
  • Tots els camps han de ser privats perquè l'accés directe als camps estigui bloquejat.
  • Sense Setters
  • Tots els camps mutables haurien de ser finals perquè no es puguin repetir un cop inicialitzats.

Considereu l'exemple següent:

 public class JtpExample1 { private final String s; JtpExample1(final String s) { this.s = s; } public final String getName() { return s; } public static void main(String[] args) { JtpExample obj = new JtpExample('Core Java Training'); System.out.println(obj.getName()); } } 

Sortida:

 Core Java Training 

Per tant, hem parlat dels objectes i classes mutables i immutables. Parlem de les diferències entre ells:

Diferència entre objectes mutables i immutables

A continuació es mostren algunes diferències clau entre objectes mutables i immutables Java :

cadena booleana java
  • Els objectes mutables es poden canviar a qualsevol valor o estat sense afegir un objecte nou. Mentre que, els objectes immutables no es poden canviar al seu valor o estat un cop creats. En el cas dels objectes immutables, sempre que canviem l'estat de l'objecte, es crearà un nou objecte.
  • Els objectes mutables proporcionen un mètode per canviar el contingut de l'objecte. Comparativament, els objectes immutables no proporcionen cap mètode per canviar els valors.
  • Els objectes mutables donen suport tant als setters com als getters. Comparativament, els objectes immutables només admeten setters, no getters.
  • Els objectes mutables poden ser o no segurs per a fils, però els objectes immutables ho són per defecte.
  • Els exemples de classes mutables són StringBuffer, Java.util.Date, StringBuilder, etc. Mentre que els objectes immutables són classes heretades, classes d'embolcall, classe String, etc.

Considereu la taula següent:

Mutable Immutable
Podem canviar el valor dels objectes mutables després de la inicialització. Un cop s'inicia un objecte immutable; No podem canviar els seus valors.
L'estat es pot canviar. L'estat no es pot canviar.
En els objectes mutables, no es formen nous objectes. En els objectes immutables, es forma un objecte nou quan s'altera el valor de l'objecte.
Proporciona mètodes per canviar l'objecte. No proporciona cap mètode per canviar el valor de l'objecte.
Admet els mètodes get() i set() per delatar amb l'objecte. Només admet el mètode get() per passar el valor de l'objecte.
Les classes mutables poden ser o no segures per a fils. Les classes immutables són segures per a fils.
L'essencial per crear una classe mutable són mètodes per modificar camps, captadors i configuradors. Els elements essencials per crear una classe immutable són la classe final, els camps privats, els objectes mutables finals.

Per què les cadenes a Java són immutables

String en Java és una classe molt especial, ja que s'utilitza gairebé en tots els programes Java. És per això que és Immutable per millorar el rendiment i la seguretat. Entenem-ho en detall:

A Java, les cadenes utilitzen el concepte de literals. Suposem que tenim un objecte que té moltes variables de referència. En aquest escenari, si canviem el valor d'una variable de referència, afectarà tot l'objecte i tots els seus valors.

anotacions a Spring Boot

A part dels motius anteriors, els motius següents també són els responsables de fer immutable la cadena:

Els objectes immutables són molt senzills; no hi ha necessitat de sincronització i són inherentment segurs per a fils. Però, els objectes immutables són bons blocs de construcció per a altres objectes, per la qual cosa els hem de proporcionar una cura especial.

La majoria dels desenvolupadors fan que String sigui l'objecte final perquè no es pugui modificar més endavant.

Conclusió

Hem parlat dels objectes mutables i immutables a Java, ara tenim una comprensió clara dels objectes i classes tant mutables com immutables. A més, hem vist com crear una classe mutable i immutable.

S'observa que els objectes immutables es poden canviar al seu valor i estat un cop iniciats i poden ser o no segurs per a fils. En comparació, els objectes immutables no es poden canviar al seu estat i valor i per defecte de seguretat per a fils.