[Java] enum type(열거 타입) 정리
0. 목차
1. 개요
2. enum type
1. 개요
그래도 약 1년간 프로젝트도 해보고, 코테준비도 했던 덕분인지
우테코 미션을 받았을 때 서비스 로직을 머릿속에 그리는 건 어렵지 않게 된다.
그런데 Java 기본 개념이 부족하다 보니, 서비스 로직을 코드로 옮기는 게 어렵다...
오늘은 쓰려고 할때마다 이거.. 뭐더라 하는 enum type 찢고 넘어가자.
2. enum type
데이터 중에는 몇가지의 한정된 값만을 갖는 경우가 있다.
뭐 예를들어 행정구역이라던가(서울, 부산, 대구 등등..), 계절이라던가(봄,여름,가을,겨울) 이런 애들을 enum type이라고 한다.
라는 식으로 되어있는 설명을 봤는데 뭔소리지 싶었다.
그냥 성질이 비슷한 상수(constant) 모아놓은 애라고 생각하면 된다.
..그냥 코드만 보는게 더 이해가 쉬울지도..
2-1. enum 선언
선언하는거 엄청 쉬움.
class랑 똑같다.
//Week.java
public enum Week {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
}
//Main.java
Week today = Week.MONDAY;
이런 식으로 사용을 하면 된다.
enum의 이름은 class와 같이 대문자로 시작하는 CamelCase
이고,
각 상수의 이름은 대문자로 짓고, 단어간의 구분을 할때는 underbar(_)
를 사용한다.
만약 저 MONDAY라는 String을 사용하고 싶다면, enum class에서 제공되는 name()
메소드를 사용하면 된다.
String todayString = Week.MONDAY.name();
위와 같이 사용하면 된다.
2-2. enum 활용
위의 사용예시에서 today의 type을 보면 알 수 있듯,Week.Monday
는 Week 클래스의 instance
이다.
Week today = Week.MONDAY;
System.out.println(today instanceof Week);
이말인 즉, 생성자함수를 통해 변수에 할당을 해줄 수 있단 뜻이다.
아래와 같이 사용하면 된다.
public enum Week {
MONDAY("monday"),
TUESDAY("tuesday"),
WEDNESDAY("wednesday"),
THURSDAY("thursday"),
FRIDAY("friday"),
SATURDAY("saturday"),
SUNDAY("sunday");
private final String label;
Week(String label) {
this.label = label;
}
public String getLabel() {
return this.label;
}
}
물론 여러개의 변수도 할당 가능하다.
public enum Week {
MONDAY("monday","월"),
TUESDAY("tuesday","화"),
WEDNESDAY("wednesday","수"),
THURSDAY("thursday","목"),
FRIDAY("friday","금"),
SATURDAY("saturday","토"),
SUNDAY("sunday","일");
private final String label;
private final String value;
Week(String label, String value) {
this.label = label;
this.value = value;
}
public String getLabel() {
return this.label;
}
public String getValue() {
return value;
}
}
이정도면 사용하는데 지장은 없을듯 하다.
이제 까먹지 말아야지..