????enum???
????JDK5??????Java??????????????????????????????????????????????
????public enum Season {
????SPRING??
????SUMMER??
????AUTUMN??
????WINTER
????}
??????????????? jad????????δ???????????????????????????£?
public final class Season extends Enum {
public static Season[] values() {
return (Season[])$VALUES.clone();
}
public static Season valueOf(String s) {
return (Season)Enum.valueOf(Season?? s);
}
private Season(String s?? int i) {
super(s?? i);
}
public static final Season SPRING;
public static final Season SUMMER;
public static final Season AUTUMN;
public static final Season WINTER;
private static final Season $VALUES[];
static {
SPRING = new Season("SPRING"?? 0);
SUMMER = new Season("SUMMER"?? 1);
AUTUMN = new Season("AUTUMN"?? 2);
WINTER = new Season("WINTER"?? 3);
$VALUES = (new Season[] {
SPRING?? SUMMER?? AUTUMN?? WINTER
});
}
}
????????????????????????
????1??Season?????????????????Enum???????final????????Σ???????У?
????2??????е?SPRING??SUMMER??AUTUMN??WINTER??Season?????????????????????????н??г??????
????3??values()??????????б???$VALUES[]???????$VALUES[]?????????н??г??????
??????????enum
????1????????
??????JVM????????Щ???У?????????????????????????????????????????ν?????У?????????????????Java?????????????????????????????????????????????????????????Effective Java???? Josh Bloch ???????????????????
????public enum Singleton { INSTANCE;}
????2????switch?????
????3?????????κ????
????enum?г????????κ????????????????????????????塣
public enum EnumTest {
PLUS("+") {
@Override
public int bind(int arg1?? int arg2) {
return arg1 + arg2;
}
}??
SUB("-") {
@Override
public int bind(int arg1?? int arg2) {
return arg1 - arg2;
}
};
final String operation;
EnumTest(String operation) {
this.operation = operation;
}
abstract int bind(int arg1?? int arg2);
}
????4???????
interface Operation{
int operate(int arg1?? int arg2);
}
public enum EnumTest implements Operation {
PLUS("+") {
@Override
public int operate(int arg1?? int arg2) {
return arg1 + arg2;
}
}??
SUB("-") {
@Override
public int operate(int arg1?? int arg2) {
return arg1 - arg2;
}
};
final String operation;
EnumTest(String operation) {
this.operation = operation;
}
}
?????????????У?????? “+”??”-” ???key??PLUS??SUB???value??????????hashMap?У???????÷?????£?
????Operation operation = hashMap.get("+");
????int result = operation.bind(1?? 2);