[Java_Tutorial]35강-자바 코딩, Enum 타입[Enum Types, 자바 프로그래밍 기초 , 자바 튜토리얼]
Software/Java 2019. 8. 12. 21:48[Oracle의 Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]
[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼]
Enum 타입 (Enum Types)
Enum 타입은 미리 정의한 상수들의 세트가 되는 변수로 특별한 데이터 타입이다..그 변수는 미리 정의된 그 값들 중 하나와 같아야 한다. 방위(동서남북)를 나타내거나 요일을 나타내는 공통 샘플도 있다.
상수인 이유로 enum타입 필드의 이름들은 대문자이다.
자바 언어에서는 enum키워드를 사용해서 enum타입을 정의한다. 예를 들어 요일 enum타입을 정의할 수 있다.
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,. THURSDAY, FRIDAY, SATURDAY
}
고정된 상수의 세트를 대표하기 위해 필요한 때에 enum타입을 사용하는게 좋다. 우리가 아는 모든 가능한 종류의 세트를 사용할 수 있다. 메뉴, 명령어 등등…
아래는 Day enum 타입 예제이다.
public class EnumTest {
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
Day day;
public EnumTest(Day day) {
this.day = day;
}
public void tellItLikeItIs() {
switch(day) {
case MONDAY:
System.out.println("Mondays are bad");
break;
case FRIDAY:
System.out.println("Fridays are better");
break;
case SATURDAY: case SUNDAY:
System.out.println("Weekends are best");
break;
default:
System.out.println("Midweek days are so-so");
}
}
public static void main(String[] args) {
EnumTest firstDay = new EnumTest(Day.MONDAY);
firstDay.tellItLikeItIs();
EnumTest thirdDay = new EnumTest(Day.WEDNESDAY);
thirdDay.tellItLikeItIs();
EnumTest fifthDay = new EnumTest(Day.FRIDAY);
fifthDay.tellItLikeItIs();
EnumTest sixthDay = new EnumTest(Day.SATURDAY);
sixthDay.tellItLikeItIs();
EnumTest seventhDay = new EnumTest(Day.SUNDAY);
seventhDay.tellItLikeItIs();
}
}
아래는 결과이다.
Mondays are bad
Midweek days are so-so
Fridays are better
Weekends are best
Weekends are best
자바 프로그래밍 언어의 enum 타입(Java Programming) 다른 언어에 대비 훨씬 더 파워풀하다. Enum 선언은 클래스로 정의된다. (enum type으로 불린다.) enum 클래스 몸체는 메서드와 다른 필드를 포함할 수 있다. 컴파일러는 enum을 생성할 때 자동으로 몇 개의 특별한 메서드를 추가한다. 예를 들어 선언한 enum의 값 전체를 포함한 배열을 리턴하는 static 값 메서드가 있다. 이 메서드는 enum타입의 값을 for-each 구문을 이용해 공통으로 사용될 수 있다. 예를 들어 아래 예저는 Planet 클래스 예제로 태양계의 모든 행성을 for 순환문으로 만든 것이다.
For(Planet p : Planet.values()) {
}