java2019. 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

 

 

출처 : 자바의 신

'java' 카테고리의 다른 글

Throwable 및 stack trace의 이해  (0) 2019.09.15
try-catch finally  (0) 2019.09.15
interface와 abstract 차이  (0) 2019.09.14
final class, final method, final variable  (0) 2019.09.14
Object class  (0) 2019.09.14
Posted by easy16