java의 enum은 c처럼 간단한 enum기능에, 약간의 static class같은 기능이 추가되었다.
new를 해서 쓰지는 못하고, 상수에 value가 매핑되어 있는 형태로 사용가능하며
Serializable,Comparable, Runnable 모두 구현가능하다.
1. 간단한 java enum:
enum Day { MONDAY, TUESDAY, WEDNESDAY }
==> 항상 이값으로만 사용가능. c처럼 숫자로 자동 대체되지 않음.
2. enum에 value를 추가시:
enum Coin {
PENNY(1), NICKLE(5), DIME(10), QUARTER(25);
private int value;
private Coin(int v){
value = v;
}
public int getValue(){
return value;
}
//참고: toString()오버라이드 안해도 PENNY찍힘.
public String toString(){
return super.toString()+":"+value;
}
}
public class EnumTest {
public static void main(String args[]){
for(Coin c : Coin.values())
System.out.println(c.toString()); //오버라이드안하면 c = c.toString();
//비교시
if (c == Coin.DIME) { }
if (c.getValue() == Coin.DIME.getValue()) { }
}
}
3. enum에 value,color를 추가시:
enum Coin {
PENNY(1,"gold"), NICKLE(5,"white"), DIME(10,"silver"), QUARTER(25,"silver");
private int value;
private String color;
private Coin(int v, String c){
value = v;
color = c;
}
}