6.30 상수 대신 매 거 진 클래스 사용

2577 단어 매 거
JDK 5 는 매 거 진 기능 을 지원 하기 시 작 했 습 니 다.다음 매 거 진 종 류 는 다음 과 같 습 니 다.
 
public enum State {
	ON,OFF;
}

 
 
매 거 진 클래스 State 는 다른 클래스 를 계승 할 수 없고 다른 클래스 에 계승 할 수 없 으 며 new 를 사용 하여 State 형식의 대상 을 만 들 수 없습니다.사실 State 는 자바.lang.Enum 의 하위 클래스 로 볼 수 있 습 니 다.그 중에서 모든 상수 가 State 형식의 인 스 턴 스 로 볼 수 있 습 니 다.다음 코드 는 이해 만 할 수 있 습 니 다.
 
public class State {
	public static final State ON=new State();
	public static final State OFF=new State();
	
	private State(){}
}

 
 
State 도 구조 함 수 를 정의 할 수 있 습 니 다.다음 과 같 습 니 다.
public enum State {
	ON("1","is on"),
	OFF("2","is off");
	
	private final String key;
	private final String value;
	
	private State(String key,String value){
		this.key=key;
		this.value=value;
	}
	
	public String getKey(){
		return key;
	}
	
	public String getValue(){
		return value;
	}
} 

 
컴 파 일 러 는 State 클래스 에 values()를 삽입 합 니 다.이 방법 을 사용 하면 모든 매 거 진 을 얻 을 수 있 습 니 다.반사 로 모든 매 거 량 을 얻 을 수 있 습 니 다.다음 과 같 습 니 다.
		State[] states=State.values();//values()      
		State[] states2=State.class.getEnumConstants();//         
		
		Assert.assertEquals(states.length, states2.length);

 
컴 파일 러 는 State 에 value Of()를 삽입 합 니 다.이 방법 은 매 거 진 이름 에 따라 매 거 진 양 을 가 져 오 는 데 사 용 됩 니 다.
		State state=State.valueOf("ON");//valueOf()      		
		State state2=State.valueOf(State.class, "ON");//valueOf()   Enum ?
		Assert.assertEquals(state, state2);

 
또한 자바.util.EnumSet 과 자바.util.EnumMap 을 사용 하여 매 거 진 을 조작 할 수 있 습 니 다.
 
매 거 류 는 추상 적 인 방법 을 정의 할 수 있 습 니 다.매 거 량 은 반드시 이 추상 적 인 방법 을 실현 해 야 합 니 다.다음 과 같 습 니 다.
주의:이 방식 을 이용 하여 전략 설계 모델 을 실현 할 수 있 습 니 다.원 서 는 더 좋 은 임금 지불 의 예 가 있 습 니 다.
public enum Operation {
	PLUS { double apply(double x, double y){return x + y;} },
	MINUS { double apply(double x, double y){return x - y;} },
	TIMES { double apply(double x, double y){return x * y;} },
	DIVIDE { double apply(double x, double y){return x / y;} };
	
	//    ,            
	abstract double apply(double x, double y);
}

 
int 형식의 상수 에 비해 매 거 진 성능 이 낮 습 니 다(매 거 진 대상 을 만들어 야 하기 때 문).모 바 일 장치 에 서 는 이 문 제 를 고려 해 야 합 니 다.
 

좋은 웹페이지 즐겨찾기