2019. 5. 16. 14:43ㆍJAVA관련
enum은 상수로 선언하는 것들의 집합을 표현할 때 사용한다.
final 로 고정하는 기본 자료형의 값을 고정할 때, 클래스가 상수만으로 작성되어 있다면 enum을 사용하는 쪽이 좋다.
enum을 사용할 경우 if~eles로 처리해야하는 조건과 분기를 간편화 하기 좋다. 따라서 코드가 단순해지며 가독성이 좋아지고, enum이라는 키워드가 열거의 속성인 것을 통해 구현의도를 명확하게 알 수 있다.
enum 타입은 고정된 상수들의 집합으로써 컴파일타임에 모든 값을 알아야 한다. 따라서 private로 생성자의 접근제어를 설정해 주어야 동적으로 값이 변동되는 경우를 막을 수 있다. 이렇게 되면 외부에서 접근이 불가능하므로 final과 다르지 않으며, 인스턴스를 생성하거나 상속받을수도 없다. 따라서 enum타입은 싱글톤을 일반화한다.
실제로
private final static int MONDAY = 1;
private final static int TUESDAY = 2;
private final static int WEDNESDAY = 3;
private final static int THURSDAY = 4;
private final static int FRIDAY = 5;
private final static int SATURDAY = 6;
private final static int SUNDAY = 7;
같이 상수를 선언하는 것보다
enum Day{ MONDAY,TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; }
이런식으로 선언할 수 있다.
enum을 실제로 활용할 경우 if 문 사용을 상당히 줄일 수 있는데, 예제 코드는 아래와 같다.
public enum PowerSwitch {
//
ON("켜짐"),
OFF("꺼짐");
private String krName;
private PowerSwitch(){
//
}
private PowerSwitch(String krName){
this.krName = krName;
}
public String getKrName(){
return krName;
}
public PowerSwitch opposite() {
//
if (this == PowerSwitch.ON) {
return PowerSwitch.OFF;
} else {
return PowerSwitch.ON;
}
}
}
public class PowerSwitchMain {
//
public static void main(String[] args) {
PowerSwitch powerSwitch = PowerSwitch.ON;
displayByPowerSwitch(powerSwitch.opposite());
}
public static void displayByPowerSwitch (PowerSwitch powerSwitch){
if(powerSwitch == PowerSwitch.ON){
System.out.println("전원을 on 합니다.");
}else{
System.out.println("전원을 off 합니다.");
}
}
}
opposite() 메소드를 통해 enum으로 정의한 ON,OFF 상수를 활용하여 메인메소드에서 사용한 코드이다. if~else에 비해 훨씬 더 간결하게 사용할 수 있다.
'JAVA관련' 카테고리의 다른 글
String, StringBuffer, StringBuilder, StringTokenizer (0) | 2019.05.22 |
---|---|
POJO 의 개념 (0) | 2019.05.20 |