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 #.
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();
}
}
}
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
$ 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
Recommended Posts