Cet article vous apporte des connaissances pertinentes sur java, qui présente principalement les problèmes liés à l'utilisation des énumérations, y compris le concept d'énumération, les avantages et les inconvénients des énumérations et les méthodes courantes d'énumération, j'espère, utile à tout le monde.
Étude recommandée : "Tutoriel Java"
L'énumération est une nouvelle fonctionnalité introduite dans Java 1.5 La classe d'énumération est définie via le mot-clé enum. Une classe d'énumération est une classe spéciale. Comme les classes ordinaires, elle peut utiliser des constructeurs, définir des variables et des méthodes membres et peut également implémenter une ou plusieurs interfaces. Cependant, les classes d'énumération ne peuvent pas hériter d'autres classes.
Effectif La raison pour laquelle il est recommandé d'utiliser des énumérations pour remplacer tous les codes constants en Java est la suivante :
(1) Vérification de type, vérification de validité
(2) En tant que classe, une énumération peut avoir ses propres attributs (doit généralement être des constantes, je n'ai jamais rencontré de situation où ils ne le sont pas) et ses propres méthodes (sinon elle ne peut être écrite qu'avec switch, ce qui viole en fait le principe)
(3) et Par rapport aux constantes, vous pouvez connaître directement toutes les valeurs de retour possibles sans vérifier la documentation et le code source, ce qui est pratique pour le codage.
Cependant, le problème ici réside dans le premier point. En fait, (1) n'est pas inévitable dans un environnement distribué. Si la valeur de retour d'une interface peut avoir un contenu non défini dans le traitement métier, alors aucune exception ne doit être levée lors de la désérialisation et il n'est pas nécessaire de s'en tenir à (1). Dans le même temps, à en juger par les points (2) et (3), l’impact de la limitation du champ d’utilisation des énumérations est énorme. La réécriture de l'énumération qui possède ses propres attributs et méthodes en une combinaison de code et d'autres méthodes nécessite beaucoup plus de code et le degré de corruption du code est considérablement augmenté.
(1) Étant donné que Java prend en charge l'héritage unique, les types d'énumération ne peuvent pas hériter d'autres classes ;
(2) Problèmes pouvant être causés par l'utilisation d'énumérations comme valeurs de retourEn fait, tout le monde sait que c'est le client. Si les versions du client et du serveur sont incohérentes, cela provoquera une exception de désérialisation. Par conséquent, le « Manuel de développement Alibaba JAVA » gère ce problème en essayant d'éviter les exceptions, il est donc interdit de définir des énumérations comme valeurs de retour. .
Pour le développement commercial, la complexité de la logique métier est inévitable à mesure que l'entreprise se développe, les exigences ne feront que devenir de plus en plus complexes. Afin de prendre en compte diverses situations, cela est inévitable dans le code. Il y aura beaucoup de if-else.
Une fois qu'il y aura trop de if-else dans le code, cela affectera grandement sa lisibilité et sa maintenabilité, et le code apparaîtra très bas.
L'énumération peut résoudre ce problème ;
Concernant l'énumération et le commutateur, c'est un sujet relativement simple lorsque vous utilisez switch pour un jugement conditionnel, les paramètres de condition ne peuvent généralement être que de type entier ou caractère. Le type d'énumération est en effet pris en charge par switch. Après Java 1.7, switch prend également en charge les chaînes. Ici, nous examinons brièvement l'utilisation des types de commutateur et d'énumération
static void testSwitch(Week week){ switch (week){ case MONDAY: System.out.println(week.getMeaning()); break; case TUESDAY: System.out.println(week.getMeaning()); break; case WEDNESDAY: System.out.println(week.getMeaning()); break; case THURSDAY: System.out.println(week.getMeaning()); break; case FRIDAY: System.out.println(week.getMeaning()); break; case SATURDAY: System.out.println(week.getMeaning()); break; case SUNDAY: System.out.println(week.getMeaning()); break; default: System.out.println("您输入有误"); break; }}
Apprentissage recommandé : "Tutoriel d'apprentissage Java"
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!