java
enum class 활용법
easy16
2019. 9. 14. 15:06
enum class
//값이 필요 없는 경우
public enum OverTimeValues { A, B, C; }
//값을 할당하여 사용하는 경우, 최초 사용 시, 각 enum value마다 한번씩 생성자가 호출된다.
//이후 호출 시에는 생성자가 호출되지 않음.
public enum OverTimeValues { A(1000), B(2000), C(3000); private final int am; OverTimeValues(int am) { System.out.println("Ctor called : "+ am); this.am=am; } public int getAmount() { return am; } } public static void main(String [] args) { TestApplication test = new TestApplication(); enumTest(OverTimeValues.A); enumTest(OverTimeValues.B); enumTest(OverTimeValues.C); enumTest(OverTimeValues.A); enumTest(OverTimeValues.B); enumTest(OverTimeValues.C); enumTest(OverTimeValues.A); enumTest(OverTimeValues.B); enumTest(OverTimeValues.C); System.out.println("compareTo() : " + OverTimeValues.A.compareTo(OverTimeValues.B)); System.out.println("compareTo() : " + OverTimeValues.B.compareTo(OverTimeValues.A)); //enum 값들을 array로 리턴 for( OverTimeValues v : OverTimeValues.values() ) { System.out.println("values() : " + v); } } private static void enumTest(OverTimeValues time) { switch (time) { case A: System.out.println("AAAA :" + time.getAmount() ); break; case B: System.out.println("BBBB :" + time.getAmount() ); break; case C: System.out.println("CCCC :" + time.getAmount() ); break; } }
결과 :
Ctor called : 1000
Ctor called : 2000
Ctor called : 3000
AAAA :1000
BBBB :2000
CCCC :3000
AAAA :1000
BBBB :2000
CCCC :3000
AAAA :1000
BBBB :2000
CCCC :3000
compareTo() : -1
compareTo() : 1
values() : A
values() : B
values() : C
출처 : 자바의 신