Créer une classe immuable avec JAVA

Ce qui est immuable

Immuable signifie ** immuable **. En d'autres termes, une classe immuable est une classe dont le contenu de l'instance ne change pas (= ne peut pas être réécrit). Réécrire une classe immudeable signifie recréer une instance (soyez prudent lorsque vous l'utilisez car les anciennes instances vont s'accumuler et la vitesse de traitement ralentira si des instances sont créées plusieurs fois au cours du traitement itératif. Je dois). Lors de l'utilisation d'une classe immuable, il est nécessaire de vérifier si le contenu a été modifié et si la valeur du type de référence est utilisée.

Avantages d'immuable

Étant donné que l'état des objets immuables ne change pas depuis la création, il n'est pas nécessaire de s'inquiéter de la modification de la valeur sous une forme involontaire pendant le traitement. Une classe immuable typique est la classe String.

Conditions au moment de la création

Pour créer une classe immuable, les quatre conditions suivantes doivent être remplies.

** 1. Déclarez la classe comme finale **

** 2. Rendre tous les champs finaux et privés ** Déclarez la classe comme finale ou rendez le constructeur privé et instanciez-le avec une méthode de fabrique

** 3. Ne définissez pas le setter ** Déclarez la classe comme finale ou rendez le constructeur privé et instanciez-le avec une méthode de fabrique

** 4. Le champ ne contient pas de référence à un objet mmutable **

Fruits.java


public final class Fruits {
    private final String color;
    private final int amount;

    public Fruits(String name, String, int age) {
        this.name = color;
        this.age = amount;
    }

    public String getColor() {
        return color;
    }

    public int getAmount() {
        return amount;
    }
}

Toute tentative de modification entraînera une erreur.

FruitsTest.java


@Test
public void fruitsTest() {
    final Person Fruits = new Fruits("Red", 28);
    // error
    // fruits.setColor("yellow");
    // fruits.amount(30);
}

Recommended Posts

Créer une classe immuable avec JAVA
[Java] Créer un module exécutable avec Gradle
Créez une application avec Spring Boot 2
Créer un fichier Excel avec POI
Créez une application avec Spring Boot
Exécuter des applications écrites en Java8 en Java6
Je ne peux pas créer une classe Java avec un nom spécifique dans IntelliJ
Créons vous-même une instance avec .new. .. ..
Créez une classe temporaire avec le nouvel Object () {}
Créer des applications Java avec IBM Cloud Functions
[Java] Obtenez la date avec la classe LocalDateTime
Méthodes de classe Java
[Java] Héritage de classe
classe Scanner java
Classe Java HashMap
java (classe abstraite)
[Java] Classe imbriquée
Classe anonyme Java
À propos de la classe Java
[java] Classe abstraite
[Java] Classe d'objets
Classe locale Java
Créer un CSR avec des informations étendues en Java
Créez un tableau d'affichage simple avec Java + MySQL
[Windows] [IntelliJ] [Java] [Tomcat] Créer un environnement pour Tomcat 9 avec IntelliJ
Créons un processus chronométré avec la minuterie de Java! !!
Créez une API JSON prenant en charge le cryptage RSA avec wicket
[Java] Créer une collection avec un seul élément
Créer un environnement de test E2E avec Selenium (Java)
[Java] Trouvez le nombre premier avec le tamis Eratostenes
Créer un site EC avec Rails5 ⑤ ~ Modèle client ~
Créer un annotateur qui utilise kuromoji avec NLP4J [007]
Créer un site EC avec Rails 5 ⑩ ~ Créer une fonction de commande ~
Créez un environnement ARM-cpu avec qemu sur mac et exécutez java [Résultat → Échec]
Installez java avec Homebrew
[Java] Trier ArrayList avec des éléments de votre propre classe
Essayez de créer avec Trailblazer
À propos de la division de classe (Java)
[Java] Trouvez le nombre premier avec le tamis Eratostenes (Partie 2)
À propos de la classe Java StringBuilder
Changer de siège avec Java
Installez Java avec Ansible
Créez un serveur de fichiers HTTPS pour le développement avec ring-jetty-adapter
Créer un site EC avec Rails5 ⑦ ~ Adresse, modèle de genre ~
[Java] Créer un filtre
Créer un site EC avec Rails 5 ⑨ ~ Créer une fonction de panier ~
[Java] À propos de la classe Singleton
[java] Lancer une exception
[Débutant] Créez un jeu compétitif avec des connaissances de base sur Java
Créer un site EC avec Rails5 ④ ~ En-tête et pied de page ~
Téléchargement confortable avec JAVA
Créer un environnement de test E2E avec Docker x Cypress
Examen de la classe interne Java
Changer java avec direnv
Créez un site EC avec Rails5 ⑥ ~ entrée de données de départ ~
[Java] Obtenez la date 10 jours plus tard avec la classe Calendar
Champ de type de classe Java