Soustraire les constantes Enum des chaînes et des valeurs en Java

Aperçu

Enum est disponible à partir de Java 5 (nom de code Tiger)

Type d'énumération

Tiger prend en charge linguistiquement les types répertoriés dans le langage de programmation Java ™. La forme la plus simple d'énumération est similaire aux formats C, C ++ et C #.

Exemple de code

package com.example.enums;

/**Définir un type d'énumération simple*/
public enum MetaName {
  FOO, BAR, BAZ;
}
package com.example.enums;

/**Définir un type d'énumération avec une valeur*/
public enum OneValueEnum {

  ONE(1), TWO(2), THREE(3);

  private final int number;

  /**
   *Générez une constante d'énumération avec une valeur.
   */
  OneValueEnum(int number) {
    this.number = number;
  }

  /**
   *Préparez une méthode qui renvoie une valeur.
   */
  public int getNumber() {
    return number;
  }

  /**
   *Renvoie une constante d'énumération qui correspond à la valeur.
   */
  public static OneValueEnum getByNumber(int number) {
    //Traitement qui identifie et renvoie une constante d'énumération à partir d'une valeur
    for (OneValueEnum value : OneValueEnum.values()) {
      if (value.getNumber() == number) {
        return value;
      }
    }
    return null; //Si non identifiable
  }
}
package com.example;

import com.example.enums.MetaName;
import com.example.enums.OneValueEnum;

public class Main {

  public static void main(String[] args) {
    testMetaName();
    testOneValueEnum();
  }

  private static void testMetaName() {
    try {
      //Vous pouvez obtenir une constante Enum à partir d'une chaîne à l'aide de la méthode valueOf générée automatiquement
      System.out.println("***** FOO *****");
      MetaName foo = MetaName.valueOf("FOO");
      System.out.println("foo.getClass=" + foo.getClass());
      System.out.println("foo.getDeclaringClass=" + foo.getDeclaringClass());
      System.out.println("foo.toString=" + foo.toString());

      //IllegalArgumentException se produit lorsque vous essayez d'obtenir une constante inexistante
      System.out.println("***** bar *****");
      MetaName bar = MetaName.valueOf("bar");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private static void testOneValueEnum() {
    try {
      //Vous pouvez obtenir une constante Enum à partir d'une chaîne à l'aide de la méthode valueOf générée automatiquement
      System.out.println("***** ONE *****");
      OneValueEnum one = OneValueEnum.valueOf("ONE");
      System.out.println("one.getClass=" + one.getClass());
      System.out.println("one.getDeclaringClass=" + one.getDeclaringClass());
      System.out.println("one.toString=" + one.toString());
      System.out.println("one.getNumber=" + one.getNumber());

      //Pour obtenir la constante Enum qui correspond à la valeur, vous devez l'implémenter vous-même.
      System.out.println("***** 1 *****");
      OneValueEnum ichi = OneValueEnum.getByNumber(1); //Appelez votre propre méthode de mise en œuvre
      System.out.println("ichi.getClass=" + ichi.getClass());
      System.out.println("ichi.getDeclaringClass=" + ichi.getDeclaringClass());
      System.out.println("ichi.toString=" + ichi.toString());
      System.out.println("ichi.getNumber=" + ichi.getNumber());

      //Puisqu'aucune constante Enum ne correspond à la valeur, null est renvoyé.
      // (Comme il est auto-implémenté, vous pouvez effectuer n'importe quel traitement)
      System.out.println("***** 9 *****");
      OneValueEnum kyu = OneValueEnum.getByNumber(9);
      System.out.println("kyu=" + kyu);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Créer un exemple de code

Placez le code source.

$ tree
.
└── src
    └── com
        └── example
            ├── Main.java
            └── enums
                ├── MetaName.java
                └── OneValueEnum.java

Créez un répertoire pour la sortie du fichier de classe.

$ mkdir dest

Compilez avec la commande javac.

$ javac -sourcepath src src/com/example/Main.java -d dest

Confirmez que le fichier de classe a été généré.

$ tree
.
├── dest
│   └── com
│       └── example
│           ├── Main.class
│           └── enums
│               ├── MetaName.class
│               └── OneValueEnum.class
└── src
    └── com
        └── example
            ├── Main.java
            └── enums
                ├── MetaName.java
                └── OneValueEnum.java

Exemple de résultat d'exécution

$ java -classpath dest com.example.Main
***** FOO *****
foo.getClass=class com.example.enums.MetaName
foo.getDeclaringClass=class com.example.enums.MetaName
foo.toString=FOO
***** bar *****
java.lang.IllegalArgumentException: No enum constant com.example.enums.MetaName.bar
	at java.lang.Enum.valueOf(Enum.java:238)
	at com.example.enums.MetaName.valueOf(MetaName.java:3)
	at com.example.Main.testMetaName(Main.java:23)
	at com.example.Main.main(Main.java:9)
***** ONE *****
one.getClass=class com.example.enums.OneValueEnum
one.getDeclaringClass=class com.example.enums.OneValueEnum
one.toString=ONE
one.getNumber=1
***** 1 *****
ichi.getClass=class com.example.enums.OneValueEnum
ichi.getDeclaringClass=class com.example.enums.OneValueEnum
ichi.toString=ONE
ichi.getNumber=1
***** 9 *****
kyu=null

Matériel de référence

Recommended Posts

Soustraire les constantes Enum des chaînes et des valeurs en Java
Obtenir des attributs et des valeurs à partir d'un fichier XML en Java
Inverser la clé de la valeur dans la carte Java
Capture et sauvegarde de l'installation de sélénium en Java
Générer OffsetDateTime à partir de Clock et LocalDateTime en Java
Convertir l'énumération Java et JSON vers et depuis Jackson
[Java] [Kotlin] Appeler valueOf et les valeurs de Enum de manière générique
Reproduire l'énumération Java en C #
JSON en Java et Jackson Partie 1 Renvoyer JSON à partir du serveur
Implémentez l'interface Java dans la classe JRuby et appelez-la depuis Java
Corrigez le code de caractère en Java et lisez à partir de l'URL
Définir des méthodes abstraites dans l'énumération Java et écrire leur comportement
Différences dans la gestion des chaînes entre Java et Perl
Gestion des valeurs partitionnées et de leurs noms Enum (Java) vs DB
Note n ° 1 "Comptage et affichage des valeurs en double dans un tableau" [Java]
Arguments Java, valeurs de retour et surcharges
[Java] Supprimer les espaces dans les chaînes de caractères
Classe StringBuffer et StringBuilder en Java
Ecrire des clés et des valeurs dans Ruby
Comprendre equals et hashCode en Java
Bonjour tout le monde en Java et Gradle
Comment concaténer des chaînes avec Java
JSON en Java et Jackson Part ③ Incorporer JSON dans HTML et l'utiliser à partir de JavaScript
Gradle génère automatiquement le numéro de version de git et l'utilise en Java
Étudiez le Deep Learning à partir de zéro en Java.
Java pour les débutants, les variables et les types
Différence entre final et immuable en Java
[Java] Comparer des valeurs / chaînes (AOJ14 - jeu de cartes)
Appel de méthodes Java à partir de JavaScript exécutées en Java
OCR en Java (reconnaissance de caractères à partir d'images)
Obtenir l'historique du serveur Zabbix en Java
Différence entre les listes d'arry et les listes liées en Java
Programmer les en-têtes et pieds de page PDF en Java
Apprenez les modèles Flyweight et ConcurrentHashMap en Java
La direction de Java dans "C ++ Design and Evolution"
De Java à C et de C à Java dans Android Studio
Lire et écrire des fichiers gzip en Java
Différence entre int et Integer en Java
Discrimination d'énum dans Java 7 et supérieur
[Java] enum (type d'énumération)
[Deep Learning from scratch] en Java 1. Pour le moment, différenciation et différenciation partielle
GetInstance () à partir d'une classe @Singleton dans Groovy à partir de Java
Concernant les modificateurs transitoires et la sérialisation en Java
Détecter des vidéos similaires dans Java et OpenCV rev.2
Appel de méthode Java depuis RPG (appel de méthode dans sa propre classe)
Traitement parallèle et parallèle dans divers langages (édition Java)
Différence entre next () et nextLine () dans Java Scanner
Différences dans l'écriture des classes Java, C # et Javascript
Comment obtenir une classe depuis Element en Java
Extraction de texte en Java à partir de PDF avec pdfbox-2.0.8
Obtenez unixtime (secondes) de ZonedDateTime dans Scala / Java
Ajouter, lire et supprimer des commentaires Excel à l'aide de Java
Vérifier le comportement statique et public dans les méthodes Java
[Java] Comprenez en 10 minutes! Tableau associatif et HashMap
[Java] Obtenir plusieurs valeurs à partir d'une valeur de retour
[Deep Learning from scratch] dans Java 3. Réseau neuronal
Obtenez Enum en retirant du contenu