Dans cet article, nous expliquerons la classe immuable en Java. Nous verrons également les utilisations de la classe immuable. Il y aura des exemples de code Java montrant comment une classe immuable peut être créée en Java. Une classe immuable est une classe dont le contenu ne peut pas être modifié.
Voici quelques points importants concernant la classe immuable :
Commencez votre cours de développement de logiciels libres
Développement Web, langages de programmation, tests de logiciels et autres
Avant d'utiliser cette classe, il est important de savoir comment est créée une classe immuable. Voici les points importants à garder à l’esprit lors de la création de la classe :
Voici les principales utilisations des classes immuables en Java :
Outre les avantages répertoriés, il peut y avoir des problèmes de performances lors de l'utilisation de classes immuables. Par conséquent, lorsque la sécurité des threads et d’autres fonctionnalités ne sont pas importantes, nous pouvons envisager d’utiliser des classes mutables pour améliorer les performances.
Voici les exemples mentionnés :
Nous allons maintenant voir des exemples de code Java montrant la création de classes immuables en Java. Voici un exemple de code Java montrant comment les classes immuables sont créées 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 :
Le code ci-dessus montre la création d'une classe immuable qui ne contient aucun objet mutable en tant que membre de la classe.
Nous allons maintenant voir comment créer des classes immuables ayant des objets mutables comme membres. Une manipulation particulière est nécessaire afin de maintenir l'immuabilité dans ce cas.
Problème avec un objet mutable dans une classe immuable :
Voici un exemple de code normal montrant la création d'une classe immuable contenant des membres mutables :
Code :
package com.edubca.immutabledemo; import java.util.Date; import java.text.SimpleDateFormat; public final class ImmutableDemo { final String studentName; final int rollNumber; final Date birthDate; public ImmutableDemo (String studentName, int rollNumber, Date birthDate) { this.studentName = studentName; this.rollNumber = rollNumber; this.birthDate=birthDate; } public String getStudentName() { return studentName; } public int getRollNumber() { return rollNumber; } public Date getBirthDate() { return birthDate; } public static void main(String[] args) throws Exception { String birthDate= "31/09/1997"; ImmutableDemo obj = new ImmutableDemo ("John" , 100, new SimpleDateFormat("dd/MM/yyyy").parse(birthDate)); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); obj.getBirthDate().setTime(1000); System.out.println("After changing birth date>>>>>>>>>>>>"); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); } }
Sortie :
À partir du résultat ci-dessus, nous pouvons voir que le contenu de l'objet a été modifié puisque la date de naissance a été modifiée. Cela enfreint les règles de la classe immuable.
La solution au problème avec un objet mutable dans une classe immuable :
Afin de gérer de tels cas, certaines modifications doivent être implémentées dans le code. Dans le code modifié, lors du renvoi d'objets mutables à partir de la méthode d'obtention, nous ne renvoyons pas l'objet d'origine ; nous renvoyons plutôt le clone de l'objet. Par conséquent, les modifications apportées aux objets clonés n'ont aucun effet sur l'objet d'origine. Voici le code modifié :
Code :
package com.edubca.immutabledemo; import java.util.Date; import java.text.SimpleDateFormat; public final class ImmutableDemo { final String studentName; final int rollNumber; final Date birthDate; public ImmutableDemo (String studentName, int rollNumber, Date birthDate) { this.studentName = studentName; this.rollNumber = rollNumber; this.birthDate=birthDate; } public String getStudentName() { return studentName; } public int getRollNumber() { return rollNumber; } public Date getBirthDate() { return (Date)birthDate.clone(); } public static void main(String[] args) throws Exception { String birthDate= "31/09/1997"; ImmutableDemo obj = new ImmutableDemo ("John" , 100, new SimpleDateFormat("dd/MM/yyyy").parse(birthDate)); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); obj.getBirthDate().setTime(1000); System.out.println("After changing birth date>>>>>>>>>>>>"); System.out.println("Name is " + obj.getStudentName()); System.out.println("Roll Number is " + obj.getRollNumber()); System.out.println("Birth date is " + obj.getBirthDate()); } }
Sortie :
À partir du résultat ci-dessus, nous ne pouvons voir aucun changement dans la valeur de la date ; par conséquent, l’immuabilité de la classe reste intacte.
D'après la discussion ci-dessus, nous avons une compréhension claire des classes immuables Java. Aussi, nous en avons vu les avantages.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!