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