Enumはデータと振る舞いを持ってくれるけど、何やってるかわかる?Jadで逆コンパイルすると良いよ
とアドバイスを頂いたので、見てみました
これをJadでデコンパイルすると、
少しだけ変えて、これもデコンパイルして見てみました
すると、こうなった
enumを使ってutilクラスを作ってみたけど、中を見た分スッキリ
ちなみに、JAVA7ではenumに対して直接不等号を使えるようになり、少し便利になるようです
参考サイト
とアドバイスを頂いたので、見てみました
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;
}
参考サイト