Mutable vs Immutable Java

Mutable vs Immutable

Mutable vs Immutable

różnica między mutable vs Immutable Java

Obiekty Mutable mają pola, które można modyfikować, obiekty niezmienne nie mają pól, które można zmienić po utworzeniu obiektu. Obiekty niezmienne to obiekty, których stan nie może się zmienić po ich utworzeniu. Mutable i Immutable to dwie kategorie obiektów w Javie. W tym artykule zobaczymy różnice między zmiennymi i niezmiennymi obiektami w Javie. Ponadto, zobaczymy przykłady kodu java pokazujące różnice między zmienną i niezmienną klasą w Javie.

porównanie Head to Head między Mutable vs Immutable Java (infografiki)

Poniżej znajduje się 6 najlepszych różnic między Mutable vs Immutable Java:

rozpocznij bezpłatny Kurs tworzenia oprogramowania

tworzenie stron internetowych, języki programowania, testowanie oprogramowania & inne

Mutable vs Immutable info

zmienne i niezmienne informacje

kluczowe różnice między zmienną a niezmienną Javą

Poniżej przedstawiono kluczowe różnice między zmiennymi i niezmiennymi obiektami w Javie:

  • Obiekty Mutowalne to te obiekty, w których możemy dokonać zmian stanu obiektu bez tworzenia nowego obiektu. To jest zmienny obiekt może być modyfikowany po jego utworzeniu. W przypadku obiektów niezmiennych za każdym razem, gdy zmienia się stan obiektu, otrzymujemy nowy obiekt. Mając do czynienia z obiektami niezmiennymi nie możemy zmieniać stanu obiektu po jego utworzeniu.
  • zmienne obiekty w ogólnych przypadkach dostarczają metod, za pomocą których można zmieniać zawartość obiektów, podczas gdy obiekty niezmienne nie zapewniają żadnej metody zmiany ich zawartości.
  • w mutable java classes getter and setter methods are present while in immutable classes only Getter methods are available and not setter methods.
  • zmienne klasy mogą, ale nie muszą być bezpieczne dla wątków, podczas gdy niezmienne klasy są domyślnie bezpieczne dla wątków.
  • przykładami mutowalnych klas w Javie są java.util.Date, StringBuffer, StringBuilder, itp.natomiast klasy legacy Java, klasy wrapper, klasy String są przykładami niezmiennych klas w Javie.

Tabela porównawcza mutable vs Immutable Java

omówmy najlepsze porównanie między Mutable vs Immutable Java:

Mutable

Immutable

zmienny obiekt Java może być modyfikowany po jego utworzeniu. obiekt niezmienny Java nie może być modyfikowany po jego utworzeniu.
podczas wprowadzania zmian w istniejącym obiekcie nie powstaje nowy obiekt. przy każdej zmianie istniejącego obiektu powstaje nowy obiekt.
udostępnia metody do zmiany zawartości obiektu. nie udostępnia metod do zmiany zawartości obiektu.
metody Getter i setter są obecne w klasach mutowalnych. obecne są tylko metody gettera, a nie metody setera.
zmienne klasy mogą, ale nie muszą być bezpieczne dla wątków. niezmienne klasy są domyślnie bezpieczne dla wątków.
niektóre typowe przykłady zmiennych klas w Javie to StringBuffer, StringBuilder i java.util.Randka. wszystkie starsze klasy, klasy Wrapper, klasy String są powszechnymi przykładami niezmiennych klas w Javie.

Mutable and Immutable Java with Examples

Mutable and Immutable Java with Examples podano poniżej:

przykład #1 – Mutable Class in Java

teraz zobaczymy przykłady kodu java pokazujące tworzenie mutable and immutable class in java.

Kod:

package com.edubca.mutabledemo;
public class MutableDemo {
private String studentName;
private int rollNumber;
MutableDemo (String studentName, int rollNumber) {
this.studentName = studentName;
this.rollNumber = rollNumber;
}
public String getStudentName() {
return studentName;
}
// this setter can modify the name
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public int getRollNumber() {
return rollNumber;
}
// this setter can modify roll number
public void setRollNumber(int rollNumber) {
this.rollNumber = rollNumber;
}
public static void main(String args) {
MutableDemo obj = new MutableDemo ("John" , 100);
System.out.println("Original Name is " + obj.getStudentName());
System.out.println("Original Roll Number is " + obj.getRollNumber());
// update the name, and roll number as is mutable
obj.setStudentName("James");
obj.setRollNumber(102);
System.out.println("Modified Name is " + obj.getStudentName());
System.out.println("Modified Roll Number is " + obj.getRollNumber());
}
}

wyjście:

Mutable vs Immutable Java-1.1

Mutable vs Immutable Java-1.1

powyższy kod pokazuje tworzenie mutowalnej klasy w Javie z geterami i seterami.

przykład #2 – niezmienna klasa w Javie

teraz zobaczymy, jak możemy tworzyć niezmienne klasy w Javie.

Kod:

package com.edubca.immutabledemo;
public final class ImmutableDemo {
final String studentName;
final int rollNumber;
public ImmutableDemo (String studentName, int rollNumber) {
this.studentName = studentName;
this.rollNumber = rollNumber;
}
public String getStudentName() {
return studentName;
}
public int getRollNumber() {
return rollNumber;
}
public static void main(String args) {
ImmutableDemo obj = new ImmutableDemo ("John" , 100);
// Since no getters are available contents cannot be modified.
// Also as variables are declared final they cannot be modified
System.out.println("Name is " + obj.getStudentName());
System.out.println("Roll Number is " + obj.getRollNumber());
}
}

wyjście:

Mutable vs Immutable Java-1.2

Mutable vs Immutable Java-1.2

powyższy kod pokazuje tworzenie Java immutable class. Podczas tworzenia niezmiennej klasy należy pamiętać o następujących kwestiach:

  • niezmienna klasa musi być ostateczna, ponieważ nie powinna być dziedziczona.
  • wszystkie pola niezmiennej klasy powinny być ostateczne.
  • jeśli jakikolwiek zmienny obiekt jest używany jako pole w niezmiennej klasie, należy zaimplementować specjalną obsługę, aby zapobiec modyfikowaniu jego zawartości.
  • powinien być obecny publiczny konstruktor.
  • należy zdefiniować metody Getter dla wszystkich zmiennych.
  • metody setera nie powinny być obecne dla żadnych zmiennych.

wnioski

z powyższej dyskusji mamy jasne zrozumienie różnic między mutable i immutable w Javie. Widzieliśmy również przykłady Javy pokazujące, jak tworzone są zmienne i niezmienne klasy. Ważne jest, aby pamiętać, że klasy niezmienne są domyślnie bezpieczne dla wątków, podczas gdy klasy mutable mogą, ale nie muszą być bezpieczne dla wątków.

Polecane artykuły

jest to przewodnik po Mutowalnej i niezmiennej Javie. Tutaj omówimy również zmienne vs niezmienne kluczowe różnice Java z infografikami i tabelą porównawczą. Możesz również zapoznać się z poniższymi artykułami, aby dowiedzieć się więcej–

  1. Java BufferedReader
  2. Klasa StringBuffer w Javie
  3. Java RuntimeException
  4. Java newInstance()
0 akcje

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.