Subtrahieren Sie Enum-Konstanten von Zeichenfolgen und Werten in Java zurück

Überblick

Enum ist in Java 5 (Codename Tiger) erhältlich.

Aufzählungstyp

Tiger unterstützt sprachlich die in der Programmiersprache Java ™ aufgeführten Typen. Die einfachste Form der Aufzählung ähnelt den Formaten C, C ++ und C #.

Beispielcode

package com.example.enums;

/**Definieren Sie einen einfachen Aufzählungstyp*/
public enum MetaName {
  FOO, BAR, BAZ;
}
package com.example.enums;

/**Definieren Sie einen Aufzählungstyp mit einem Wert*/
public enum OneValueEnum {

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

  private final int number;

  /**
   *Generieren Sie eine Enum-Konstante mit einem Wert.
   */
  OneValueEnum(int number) {
    this.number = number;
  }

  /**
   *Bereiten Sie eine Methode vor, die einen Wert zurückgibt.
   */
  public int getNumber() {
    return number;
  }

  /**
   *Gibt eine Enum-Konstante zurück, die dem Wert entspricht.
   */
  public static OneValueEnum getByNumber(int number) {
    //Verarbeitung, die eine Enum-Konstante aus einem Wert identifiziert und zurückgibt
    for (OneValueEnum value : OneValueEnum.values()) {
      if (value.getNumber() == number) {
        return value;
      }
    }
    return null; //Wenn nicht identifizierbar
  }
}
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 {
      //Mit der automatisch generierten valueOf-Methode können Sie eine Enum-Konstante aus einer Zeichenfolge abrufen
      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 tritt auf, wenn versucht wird, eine nicht vorhandene Konstante abzurufen
      System.out.println("***** bar *****");
      MetaName bar = MetaName.valueOf("bar");
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private static void testOneValueEnum() {
    try {
      //Mit der automatisch generierten valueOf-Methode können Sie eine Enum-Konstante aus einer Zeichenfolge abrufen
      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());

      //Um die Enum-Konstante zu erhalten, die dem Wert entspricht, müssen Sie sie selbst implementieren.
      System.out.println("***** 1 *****");
      OneValueEnum ichi = OneValueEnum.getByNumber(1); //Rufen Sie Ihre eigene Implementierungsmethode auf
      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());

      //Da es keine Enum-Konstante gab, die dem Wert entspricht, wird null zurückgegeben.
      // (Da es selbst implementiert ist, können Sie jede Verarbeitung durchführen)
      System.out.println("***** 9 *****");
      OneValueEnum kyu = OneValueEnum.getByNumber(9);
      System.out.println("kyu=" + kyu);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

Erstellen Sie einen Beispielcode

Platzieren Sie den Quellcode.

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

Erstellen Sie ein Verzeichnis für die Ausgabe von Klassendateien.

$ mkdir dest

Kompilieren Sie mit dem Befehl javac.

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

Bestätigen Sie, dass die Klassendatei generiert wurde.

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

Beispielausführungsergebnis

$ 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

Referenzmaterial

Recommended Posts

Subtrahieren Sie Enum-Konstanten von Zeichenfolgen und Werten in Java zurück
Ruft Attribute und Werte aus einer XML-Datei in Java ab
Schlüssel vom Wert in Java Map umkehren
Erfassen und speichern Sie die Selen-Installation in Java
Generieren Sie OffsetDateTime aus Clock und LocalDateTime in Java
Konvertieren Sie Java Enum Enumeration und JSON von und nach Jackson
[Java] [Kotlin] Rufen Sie valueOf und Werte von Enum generisch auf
Reproduzieren Sie die Java-Enumeration in C #
JSON in Java und Jackson Teil 1 Gibt JSON vom Server zurück
Implementieren Sie die Java-Schnittstelle in der JRuby-Klasse und rufen Sie sie von Java aus auf
Korrigieren Sie den Zeichencode in Java und lesen Sie von der URL
Definieren Sie abstrakte Methoden in Java enum und schreiben Sie deren Verhalten
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
Verwaltung partitionierter Werte und ihrer Namen Enum (Java) vs DB
Hinweis Nr. 1 "Zählen und Anzeigen doppelter Werte in einem Array" [Java]
Java-Argumente, Rückgabewerte und Überladungen
[Java] Entfernen Sie Leerzeichen in Zeichenfolgen
StringBuffer- und StringBuilder-Klasse in Java
Schreiben Sie Schlüssel und Werte in Ruby
Verstehe gleich und hashCode in Java
Hallo Welt in Java und Gradle
So verketten Sie Zeichenfolgen mit Java
JSON in Java und Jackson Teil ③ Betten Sie JSON in HTML ein und verwenden Sie es aus JavaScript
Gradle generiert automatisch eine Versionsnummer aus git und verwendet diese in Java
Lernen Sie Deep Learning von Grund auf in Java.
Java für Anfänger, Variablen und Typen
Unterschied zwischen final und Immutable in Java
[Java] Werte / Strings vergleichen (AOJ14 - Kartenspiel)
Rufen Sie Java-Methoden aus JavaScript auf, das in Java ausgeführt wird
OCR in Java (Zeichenerkennung aus Bildern)
Abrufen des Verlaufs vom Zabbix-Server in Java
Unterschied zwischen Arrylist und verknüpfter Liste in Java
Programmieren Sie PDF-Kopf- und Fußzeilen in Java
Lernen Sie Flyweight-Muster und ConcurrentHashMap in Java
Die Richtung von Java in "C ++ Design and Evolution"
Von Java nach C und von C nach Java in Android Studio
Lesen und Schreiben von GZIP-Dateien in Java
Unterschied zwischen int und Integer in Java
Diskriminierung von Enum in Java 7 und höher
[Java] enum (Aufzählungstyp)
[Deep Learning von Grund auf neu] in Java 1. Zur Zeit Differenzierung und teilweise Differenzierung
GetInstance () aus einer @ Singleton-Klasse in Groovy aus Java
In Bezug auf transiente Modifikatoren und Serialisierung in Java
Erkennen Sie ähnliche Videos in Java und OpenCV Version 2
Java-Methodenaufruf von RPG (Methodenaufruf in eigener Klasse)
Parallele und parallele Verarbeitung in verschiedenen Sprachen (Java Edition)
Unterschied zwischen next () und nextLine () in Java Scanner
Unterschiede beim Schreiben von Java-, C # - und Javascript-Klassen
So erhalten Sie eine Klasse von Element in Java
Textextraktion in Java aus PDF mit pdfbox-2.0.8
Holen Sie sich Unixtime (Sekunden) von ZonedDateTime in Scala / Java
Hinzufügen, Lesen und Löschen von Excel-Kommentaren mit Java
Überprüfen Sie das statische und öffentliche Verhalten in Java-Methoden
[Java] Verstehe in 10 Minuten! Assoziatives Array und HashMap
[Java] Ruft mehrere Werte von einem Rückgabewert ab
[Deep Learning von Grund auf neu] in Java 3. Neuronales Netzwerk
Holen Sie sich Enum, indem Sie sich vom Inhalt zurückziehen