Java Mutable vs Immuable

 Mutable vs Immuable

 Mutable vs Immuable

Différence Entre Java Mutable vs Immuable

Les objets Mutables ont des champs qui peuvent être modifiés, les objets immuables n’ont pas de champs qui peuvent être modifiés après la création de l’objet. Les objets immuables sont des objets dont l’état ne peut pas changer après leur création. Mutable et Immuable sont deux catégories d’objets en java. Dans cet article, nous verrons les différences entre les objets mutables et immuables en java. En outre, nous verrons des exemples de code java montrant des différences entre les classes mutables et immuables en java.

Comparaison en tête à tête entre Java Mutable et Immuable (Infographie)

Voici les 6 principales différences entre Java Mutable et Immuable:

Commencez Votre Cours de Développement Logiciel Gratuit

Développement Web, langages de programmation, Tests de logiciels & autres

 Informations mutables vs Immuables

 Informations mutables vs Immuables

Principales différences entre Java Mutable vs Immuable

Voici les principales différences entre les objets mutables et immuables en Java:

  • Les objets mutables sont les objets dans lesquels nous pouvons apporter des modifications à l’état d’un objet sans en créer un nouvel objet. C’est-à-dire qu’un objet mutable peut être modifié après sa création. Dans le cas d’objets immuables chaque fois que l’état d’un objet est modifié, nous obtenons un nouvel objet. Lorsqu’il s’agit d’objets immuables, nous ne sommes pas autorisés à changer l’état d’un objet après sa création.
  • Les objets mutables fournissent en général des méthodes par lesquelles le contenu des objets peut être modifié alors que les objets immuables ne fournissent aucune méthode pour modifier leur contenu.
  • Dans les classes java mutables, les méthodes getter et setter sont présentes alors que dans les classes immuables, seules les méthodes getter sont disponibles et non les méthodes setter.
  • Les classes mutables peuvent ou non être thread-safe alors que les classes immuables sont par défaut thread-safe.
  • Des exemples de classes mutables en java sont java.util.Date, StringBuffer, StringBuilder, etc. alors que les classes java legacy, les classes wrapper, la classe String sont des exemples de classes immuables en java.

Tableau de comparaison Java Mutable vs Immuable

Discutons de la comparaison supérieure entre Java Mutable et Immuable:

Mutable

Immuable

L’objet mutable Java peut être modifié après sa création. L’objet immuable Java ne peut pas être modifié après sa création.
Aucun nouvel objet n’est formé lorsque des modifications sont apportées à un objet existant. Chaque fois qu’un objet existant est modifié, un nouvel objet est formé.
Il fournit des méthodes pour modifier le contenu d’un objet. Il ne fournit pas de méthodes pour modifier le contenu d’un objet.
Les méthodes Getter et setter sont présentes dans les classes mutables. Seules les méthodes getter sont présentes et non les méthodes setter.
Les classes mutables peuvent ou non être thread-safe. Les classes immuables sont thread-safe par défaut.
Quelques exemples courants de classes mutables en java sont StringBuffer, StringBuilder et java.util.Date. Toutes les classes héritées, les classes Wrapper, les classes String sont des exemples courants de classes immuables en java.

Java Mutable et Immuable avec des exemples

Java Mutable et Immuable avec des exemples sont donnés ci–dessous:

Exemple #1 – Classe Mutable en Java

Maintenant, nous verrons des exemples de code java montrant la création de classes mutables et immuables en java.

Code:

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());
}
}

Sortie:

 Java Mutable vs Immuable-1.1

 Java-1 Mutable vs Immuable.1

Le code ci-dessus montre la création d’une classe mutable en java avec des getters et des setters.

Exemple #2 – Classe immuable en Java

Maintenant, nous allons voir comment nous pouvons créer des classes immuables en Java.

Code:

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());
}
}

Sortie:

 Java Mutable vs Immuable-1.2

 Java Mutable vs Immuable-1.2

Le code ci-dessus montre la création de la classe java immuable. Les points suivants doivent être gardés à l’esprit lors de la création d’une classe immuable:

  • Une classe immuable doit être finale car elle ne doit pas être héritée.
  • Tous les champs d’une classe immuable doivent être rendus définitifs.
  • Si un objet mutable est utilisé comme champ dans une classe immuable, une gestion spéciale doit être implémentée afin d’éviter que son contenu ne soit modifié.
  • Un constructeur public doit être présent.
  • Les méthodes Getter pour toutes les variables doivent être définies.
  • Les méthodes Setter ne doivent pas être présentes pour les variables.

Conclusion

De la discussion ci-dessus, nous avons une compréhension claire des différences entre mutable et immuable en java. En outre, nous avons vu des exemples java montrant comment des classes mutables et immuables sont créées. Il est important de noter que les classes immuables sont par défaut thread-safe alors que les classes mutables peuvent ou non être thread-safe.

Articles recommandés

Ceci est un guide pour Java Mutable vs Immuable. Ici, nous discutons également des différences clés Java Mutables et immuables avec des infographies et un tableau de comparaison. Vous pouvez également consulter les articles suivants pour en savoir plus –

  1. Java BufferedReader
  2. Classe StringBuffer dans Java
  3. Exception d’exécution Java
  4. Java newInstance()
0 Partages

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.