Java enum type 에는 constant-specific method 구현이라는 기법이 있다.
쉽게 말하자면 각각의 상수마다 다른 행동을 구현하는 것인데, enum type 을 통해서 간단하게 구현할 수 있다.
아래의 예제는 Effective Java 2nd edition 에서 발췌한 것이다.
public enum Operation { PLUS("+") {double apply(double x, double y){return x + y;}}, // "+" symbol 을 갖는 PLUS 상수의 행동을 정의 MINUS("-") {double apply(double x, double y){return x - y;}}, // "-" symbol 을 갖는 MINUS 상수의 행동을 정의 TIMES("*") {double apply(double x, double y){return x * y;}}, // "*" symbol 을 갖는 TIME 상수의 행동을 정의 DIVIDE("/") {double apply(double x, double y){return x / y;}}; // "/" symbol 을 갖는 DIVIDE 상수의 행동을 정의 private final String symbol; // enum type 에서 인스턴스 variable 은 반드시 final 로 선언이 되어야 하며, Operation(String symbol) { this.symbol = symbol;} // Constructor 에서 같이 초기화가 되어야 한다. @Override public String toString() {return symbol;} // 각각의 상수에 맞는 symbol 을 toString 메소드를 override 하여 출력 abstract double apply(double x, double y); // 각각의 constant-specific method 를 위한 추상 메소드
public static void main(String [] args) { double x = Double.parseDouble(args[0]); // 첫 번째 command line argument 를 x 로 설정 double y = Double.parseDouble(args[1]); // 두 번째 command line argument 를 y 로 설정 for (Operation op : Operation.values()) { // x 와 y 의 값을 이용하여 각각의 constant-specific method 의 작동을 시험 System.out.printf("%f %s %f = %f%n", x, op, y, op.apply(x, y)); } } } |
프로그램 실행시 command line 인자로 2 와 4 를 입력하였다.
출력 결과는 아래와 같다.
2.000000 + 4.000000 = 6.000000
2.000000 - 4.000000 = -2.000000
2.000000 * 4.000000 = 8.000000
2.000000 / 4.000000 = 0.500000
'Programming > Java' 카테고리의 다른 글
Bounded wildcard type vs Bounded type parameter (0) | 2012.11.27 |
---|---|
Java 버전 1.5 부터 소개된 enum 에 대해서 (0) | 2012.11.27 |
Android app (안드로이드 앱) 개발시 지켜야 할 코드 스타일 제안 (0) | 2012.11.27 |
Spring Hello World! (0) | 2012.06.10 |
Map, HashMap 순회하기 (1) | 2012.06.05 |