Annotations and Reflection
Enum Reflection
Enum metadata exposes the constants declared by an enum type.
enum constants
getEnumConstants returns the enum values in declaration order.
ordinal
An enum ordinal is its zero-based position in the declaration.
Enum Reflection
EnumReflection.java
Replay: real traced execution (multi-file project)
public class EnumReflection {
enum Status {
READY,
RUNNING,
DONE
}
public static void main(String[] args) {
int index = 0;
Status[] values = Status.class.getEnumConstants();
Status status = values[index];
System.out.println("name=" + status.name());
System.out.println("ordinal=" + status.ordinal());
}
}
public class EnumReflection {
enum Status {
READY,
RUNNING,
DONE
}
public static void main(String[] args) {
int index = 1;
Status[] values = Status.class.getEnumConstants();
Status status = values[index];
System.out.println("name=" + status.name());
System.out.println("ordinal=" + status.ordinal());
}
}
public class EnumReflection {
enum Status {
READY,
RUNNING,
DONE
}
public static void main(String[] args) {
int index = 2;
Status[] values = Status.class.getEnumConstants();
Status status = values[index];
System.out.println("name=" + status.name());
System.out.println("ordinal=" + status.ordinal());
}
}
index ← 0, status ← READY
8public static void main(String[] args) {9 int index→ 0 = 0; //@index=1, 210 Status[] values = Status.class.getEnumConstants();11 Status status→ READY = values[index]READY;1213 System.out.println("name=" + status.name());14 System.out.println("ordinal=" + status.ordinal());15}outputname=READY ordinal=0
index ← 1, status ← RUNNING
8public static void main(String[] args) {9 int index→ 1 = 1;10 Status[] values = Status.class.getEnumConstants();11 Status status→ RUNNING = values[index]RUNNING;1213 System.out.println("name=" + status.name());14 System.out.println("ordinal=" + status.ordinal());15}outputname=RUNNING ordinal=1
index ← 2, status ← DONE
8public static void main(String[] args) {9 int index→ 2 = 2;10 Status[] values = Status.class.getEnumConstants();11 Status status→ DONE = values[index]DONE;1213 System.out.println("name=" + status.name());14 System.out.println("ordinal=" + status.ordinal());15}outputname=DONE ordinal=2