Exemple d'utilisation de Java Enum

Lorsque j'utilisais Java pour le travail auparavant, il y avait un processus difficile à comprendre, alors je l'ai refactoré.

Avant de refactoriser

C'était comme ça avant la refactorisation.


   private void doProcess() {
      A a = initial(); 
      if (!chkfnc1(a)) {
        throw new XXXException(x1);
      }

      if (!chkfnc2(a)) {
        throw new XXXException(x2);         
      }
      
      if (!chkfnc3(a)) {
        throw new XXXException(x3);         
      }
      
      
     execute(a); //Traitement d'exécution après contrôle
     
   }

  private boolean chkfnc1(a) {}
  private boolean chkfnc2(a) {}
  private boolean chkfnc3(a) {}
  

Obtenir l'instance -> Vérifier l'authenticité de l'instance (n fois) -> Processus d'exécution C'est un flux.

Supposons que «chkfncN» circule dans une séquence et ait une dépendance d'ordre.

Si cette situation persiste, si l'exigence de vérification augmente de un, il sera difficile de déterminer quand la fonction chkfncN sera vérifiée, et ce sera dégoûtant.

Enum Quand j'entends Enum,

--La correspondance avec des valeurs numériques peut être prise

Etc. Je pense que la plus grande caractéristique à mon avis est que la commande est garantie.

Fait également partie de la définition de la classe de type Enum de Haskell


class Enum a where
 succ :: a -> a --Fonction affichant les valeurs suivantes
 pred :: a -> a --Fonction affichant la valeur précédente

Est défini.

Aussi en Java Enum

  
for (DaysOfWeekEnum day : DaysOfWeekEnum.values()) {
}

Il peut être traité dans l'ordre comme celui-ci

Fonctionnalités de l'énumération Java

Java Enum ** Les fonctions peuvent être définies dans Enum ** https://qiita.com/KeithYokoma/items/9681b130ea132cfad64d

combiner

Sur la base de ce qui précède, vous pouvez le faire.


public enum MyChecker {
    CHK1 {
        @Override
        public boolean chkfnc(A a) {}
        @Override
        public String erroMsg(){}
    },
    CHK2 {
        @Override
        public boolean chkfnc(A a) {}
        @Override
        public String erroMsg(){}
    };
    CHK3 {
        @Override
        public boolean chkfnc(A a) {}
        @Override
        public String erroMsg(){}
    };
    public abstract boolean chkfnc(A a);
    public abstract String errorMsg;
}

En utilisant l'exemple précédent


private void doProcess() {
  A a = initial();
  for (MyChecker val : MyChecker.values()) {
     if (!val.chefnc) {
       throw new XXXException(val.erroMsg);
     }
  }
}

Et l'intérieur de doProcess a été rafraîchi et la vue s'est améliorée. De plus, puisque la commande est garantie en utilisant Enum, c'est presque comme si vous vouliez garantir l'opération.

Résumé

Il n'y avait pas beaucoup d'articles qui utilisaient les valeurs d'Enum en Java comme celui-ci, alors je l'ai écrit. La situation dans laquelle il peut être utilisé est limitée, mais si vous reconnaissez que enum garantit l'ordre, je pense que d'autres applications fonctionneront également.

Recommended Posts

Exemple d'utilisation de Java Enum
[Java] enum (type d'énumération)
Enum Reverse Map Java
Exemple de cycle de vie de servlet Java
[Java] Exemple de cas de test JUnit 4
Modèle de stratégie Enum en Java
Reproduire l'énumération Java en C #
[Java] Énumération des branches avec instruction switch
Exemple d'encodage et de décodage en Java
Java
[Java] Réduire les instructions if avec Enum
Comment formater enum à l'aide de formatter-maven-plugin (Java)
[Kotlin] Un exemple de traitement utilisant Enum
Java
Comment utiliser le type enum Java
[Java] Type Express Enum sans utiliser le type Enum (énumération)
Méthode de concurrence en Java avec exemple de base
Créez quelque chose comme Enum de Java avec Typescript
Envisagez de rechercher Java Enum par un autre élément