6.30 상수 대신 매 거 진 클래스 사용
2577 단어 매 거
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 형식의 상수 에 비해 매 거 진 성능 이 낮 습 니 다(매 거 진 대상 을 만들어 야 하기 때 문).모 바 일 장치 에 서 는 이 문 제 를 고려 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
구간 중수i ~ j 블록 의 답 (복잡 도 는 n * sqrt (n) 내 에서 보장 할 수 있 습 니 다) 을 미리 처리 하 는 것 입 니 다. 만약 에 L 이 x 블록 에 속 하고 R 이 y 블록 에 속한다 고 가정 하면 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.