Enumはデータと振る舞いを持ってくれるけど、何やってるかわかる?Jadで逆コンパイルすると良いよぶちゅとアドバイスを頂いたので、見てみましたうーたん

public enum EnumTest {
A,
B;
}

これをJadでデコンパイルすると、

// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: EnumWatch.java


public final class EnumWatch extends Enum
{

private EnumWatch(String s, int i)
{
super(s, i);
}

public static EnumWatch[] values()
{
EnumWatch aenumwatch[];
int i;
EnumWatch aenumwatch1[];
System.arraycopy(aenumwatch = ENUM$VALUES, 0,
      aenumwatch1 = new EnumWatch[i = aenumwatch.length], 0, i);
return aenumwatch1;
}

public static EnumWatch valueOf(String s)
{
return (EnumWatch)Enum.valueOf(EnumWatch, s);
}

public static final EnumWatch A;
public static final EnumWatch B;
private static final EnumWatch ENUM$VALUES[];

static
{
A = new EnumWatch("A", 0);
B = new EnumWatch("B", 1);
ENUM$VALUES = (new EnumWatch[] {
A, B
});
}
}

少しだけ変えて、これもデコンパイルして見てみましたチャーミー

public enum EnumWatch {

  A(1,2),
  B(3,4);

  private int first;
  private int second;

  private EnumWatch(int first, int second) {
   this.first = first;
this.second = second;
  }

  public int getFirst() {
    return first;
  }

  public void setFirst(int first) {
this.first = first;
  }

  public int getSecond() {
return second;
  }

  public void setSecond(int second) {
this.second = second;
  }
}

すると、こうなった?

// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3)
// Source File Name: EnumWatch.java


public final class EnumWatch extends Enum
{

private EnumWatch(String s, int i, int first, int second)
{
super(s, i);
this.first = first;
this.second = second;
}

public int getFirst()
{
return first;
}

public void setFirst(int first)
{
this.first = first;
}

public int getSecond()
{
return second;
}

public void setSecond(int second)
{
this.second = second;
}

public static EnumWatch[] values()
{
EnumWatch aenumwatch[];
int i;
EnumWatch aenumwatch1[];
System.arraycopy(aenumwatch = ENUM$VALUES, 0,
      aenumwatch1 = new EnumWatch[i = aenumwatch.length], 0, i);
return aenumwatch1;
}

public static EnumWatch valueOf(String s)
{
return (EnumWatch)Enum.valueOf(EnumWatch, s);
}

public static final EnumWatch A;
public static final EnumWatch B;
private int first;
private int second;
private static final EnumWatch ENUM$VALUES[];

static
{
A = new EnumWatch("A", 0, 1, 2);
B = new EnumWatch("B", 1, 3, 4);
ENUM$VALUES = (new EnumWatch[] {
A, B
});
}
}

enumを使ってutilクラスを作ってみたけど、中を見た分スッキリギズモ
ちなみに、JAVA7ではenumに対して直接不等号を使えるようになり、少し便利になるようです合格

  boolean isRoyalty(Rank r) {
return rank >= Rank.JACK && rank != Rank.ACE;
}
ってできるようになる!
参考サイト