[JAVA] Utilisation de base et exemple de code d'énumération

introduction

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.

Fonctionnalités de type énumération

--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.

Définition du type d'énumération

Cette section présente la définition du type d'énumération. Voici un exemple de code très simple:

Exemple de code


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.

Exemple de code

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.

Exemple de code

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.

Méthode du type d'énumération

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.

・ ToString ()


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.

・ ValueOf (nom de la chaîne)


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`.

・ Valeurs ()


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.

À la fin

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.

Matériel de référence

À propos d'énumération (article Qiita) Comportez-vous avec Enum (article de Qiita)

Recommended Posts

Utilisation de base et exemple de code d'énumération
Utilisation super basique d'Eclipse
Utilisation de base de Java Facultatif Partie 1
[Rails] Différences et utilisation de each_with_index et each.with_index
Structure de base du code source Java
Exemples de fonctions lambda, tri et anonymes
[Ruby] Distinction et utilisation des boucles dans Ruby
Introduction et explication de l'utilisation de Font Awesome
Discrimination d'énum dans Java 7 et supérieur
Promesse JDBC et exemple d'écriture
Table des matières Refactoring de code et articles associés
Apprenez le mécanisme rudimentaire et l'utilisation de Gradle 4.4
Installation et configuration JDK, structure de base du code source
Revue Java ③ (utilisation de base des tableaux / type de référence)
[Ruby] Liste de codes de base. Gardez les bases avec des exemples
La comparaison d'énumération est ==, et equals est bonne [Java]
Utilisation minimale de Mockito
Opérateurs et opérations de base
[Java] Différence entre l’affectation d’une variable de type de base et l’affectation d’une variable de type de référence
Exemple de code pour la simulation de base et les tests avec Mockito 3 + JUnit 5