いつものように @JonSkeets の直感が勝ちます。彼が提供したコードをコンパイルします。
public enum Fruits {
APPLE, BANANA;
}
次に、jad
利回りで逆コンパイルします。
public final class Fruits extends Enum
{
public static Fruits[] values()
{
return (Fruits[])$VALUES.clone();
}
public static Fruits valueOf(String s)
{
return (Fruits)Enum.valueOf(Fruits, s);
}
private Fruits(String s, int i)
{
super(s, i);
}
public static final Fruits APPLE;
public static final Fruits BANANA;
private static final Fruits $VALUES[];
static
{
APPLE = new Fruits("APPLE", 0);
BANANA = new Fruits("BANANA", 1);
$VALUES = (new Fruits[] {
APPLE, BANANA
});
}
}
完全な例は、列挙型を宣言するときにコンパイラが実行するすべての作業を示しています。@MarkoTopolnikが指摘しているように、コンパイラが許可しないという理由だけで、これを自分で行うことはできないことに注意してください。