L'énumération est appelée un type d'énumération, et elle semble être excellente qui peut rassembler plusieurs constantes. Puisque j'ai beaucoup étudié, je vais le résumer pour un usage personnel tout en pratiquant la rédaction d'articles. L'objectif était un article que vous pouvez consulter et vérifier lorsque vous pensez: "Comment l'utilisez-vous?" Étant donné que cet article ne traite que de l'utilisation de base des types d'énumération, il ne mentionne pas le traitement interne.
--Plusieurs constantes (énumérateurs) peuvent être unifiées et gérées par un type --Plusieurs expressions peuvent être définies dans un énumérateur
Le fait est que vous pouvez gérer les constantes collectivement. Cependant, il est nécessaire de réécrire le code chaque fois que la constante est modifiée. Avant de l'implémenter, demandez-vous s'il doit vraiment être défini comme un type d'énumération.
Cette section présente la définition du type d'énumération. Voici un exemple de code très simple:
public enum Fruit { //"class" ⇒ "enum"Réécrire dans
//Définition de l'énumérateur
APPLE,
ORANGE,
PEACH;
}
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.ORANGE; //Obtenir enum
System.out.println( flt.toString() ); //ORANGE
}
}
Une énumération avec l'une des constantes définies (énumérateurs) peut être conservée en tant que variable et obtenue si nécessaire.
Dans l'exemple ci-dessus, ʻAPPLE, ORANGE, PEACH sont entrés en tant que constantes, il n'y a donc aucun souci que d'autres chaînes de caractères (
GRAPE`, etc.) soient générées.
De cette manière, la caractéristique et le mérite d'énumération sont qu'il ne peut gérer que des constantes prédéfinies.
Les énumérateurs peuvent également être définis en combinant plusieurs types primitifs et de classe. Ce qui suit est un exemple.
public enum Fruit {
APPLE("pomme", 1),
ORANGE("Orange", 2),
PEACH("Les pêches", 3);
private String label;
private int id;
private Fruit(String label, int id) { //Déclarer le constructeur comme privé
this.label = label;
this.id = id;
}
public String getLabel() {
return label;
}
public int getId() {
return id;
}
}
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.APPLE;
System.out.println( flt.getLabel() ); //pomme
System.out.println( Fruit.PEACH.getId() ); //3
}
}
Dans l'exemple ci-dessus, l'énumérateur est une combinaison d'une chaîne et d'un entier.
Si vous comparez la classe Fruit
et la classe Basket
, vous pouvez voir qu'elles obtiennent respectivement les valeurs correspondantes.
Afin de définir et d'exploiter des énumérateurs en combinaison, il est nécessaire de définir respectivement des champs, des constructeurs et des méthodes. Inversement, vous pouvez définir des champs, des constructeurs et des méthodes selon vos besoins.
Un exemple de définition d'une méthode simple est présenté ci-dessous.
public enum Fruit {
APPLE("pomme", 1),
ORANGE("Orange", 2),
PEACH("Les pêches", 3);
private String label;
private int id;
private Fruit(String label, int id) {
this.label = label;
this.id = id;
}
public String getLabel() {
return label;
}
public int getId() {
return id;
}
public static Fruit getById(int id) {
for( Fruit flt : Fruit.values() ) { //Analyse avec instruction étendue
if( flt.getId() == id ) {
return flt; //Renvoie les instances qui correspondent aux critères
}
}
return null;
}
}
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.getById(2);
System.out.println( flt.getLabel() ); //Orange
}
}
Selon la méthode, il n'est pas toujours nécessaire de la définir dans la classe enum (par exemple, la méthode getById
dans l'exemple ci-dessus peut être utilisée sans problème même si elle est définie dans une autre classe), mais les méthodes générales autour de l'énumérateur sont résumées. Serait pratique.
Les types d'énumération ont des méthodes utiles depuis le début. Bien qu'il soit décrit dans l'exemple de code de la section précédente, je le présenterai à nouveau dans cette section.
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.ORANGE;
System.out.println( flt.toString() ); //ORANGE
}
}
toString ()
est une méthode pour obtenir la chaîne déclarée comme énumérateur.
name ()
donne le même résultat, mais il semble être obsolète.
La différence est que toString ()
peut être remplacé, mais name ()
ne le peut pas.
public class Basket {
public static void main(String[] args) {
Fruit flt = Fruit.valueOf("PEACH");
System.out.println( flt.getLabel() ); //Les pêches
}
}
valueOf (String name)
est une méthode qui renvoie un énumérateur qui correspond à la chaîne d'arguments.
Notez que si aucun énumérateur correspondant n'existe, il retournera ʻIllegalArgumentException`.
public class Basket {
public static void main(String[] args) {
for( Fruit flt : Fruit.values() ) {
System.out.println( flt.getLabel() ); //pomme
//Orange
//Les pêches
}
}
}
values ()
est une méthode principalement utilisée dans l'instruction for étendue.
Comme dans l'exemple ci-dessus, l'énumérateur peut être traité de manière exhaustive.
J'ai écrit un article sur Qiita pour la première fois cette fois, mais j'ai réalisé que je manquais de connaissances. Aussi, j'ai vérifié les points peu clairs en regardant les matériaux ici et là, mais j'ai aussi compris que j'oublierais l'endroit que je voyais correctement si je ne l'enregistrais pas. Je souhaite continuer à rédiger des articles sous forme de résumé personnel.
À propos d'énumération (article Qiita) Comportez-vous avec Enum (article de Qiita)
Recommended Posts