자바에서 enum은 상수 집합을 정의하는 특별한 데이터 타입입니다.
enum을 사용하면 관련된 상수들을 그룹화하여 코드의 가독성과 유지보수성을 높일 수 있습니다.
public class Day {
public static void main(String[] args) {
Day d =new Day();
d.week("sun");
}
public void week(String day) {
if(day.equals("sun")) System.out.println("일");
if(day.equals("mon")) System.out.println("월");
if(day.equals("tue")) System.out.println("화");
if(day.equals("wed")) System.out.println("수");
if(day.equals("thu")) System.out.println("목");
if(day.equals("fri")) System.out.println("금");
if(day.equals("sat")) System.out.println("토");
}
}
week 함수에서 sun, mon, tue, ... 이런식으로 설정을 해놨기 때문에
main함수에 있는 d.week()에 꼭 “sun”라고 입력해야 "일"이 출력됩니다.
만약 sunday라고 입력을 해버리면 값이 출력되지 않기때문에
이러한 개발자들의 실수를 대비하기 위해 enum을 사용합니다.
enum 생성방법)
파일 생성할 때 class말고 enum을 create합니다.
<Week.java>
public enum Week {
SUN, MON, TUE, WED, THU, FRI, SAT;
}
상수를 (대문자로) 나열합니다.
그리고 다시 class파일에서
<Day.java>
public class Day {
public static void main(String[] args) {
Day d =new Day();
d.week(Week.FRI);
}
public void week(Week week)
{
if(week ==Week.SUN) System.out.println("일요일");
if(week ==Week.MON) System.out.println("월요일");
if(week ==Week.TUE) System.out.println("화요일");
if(week ==Week.WED) System.out.println("수요일");
if(week ==Week.THU) System.out.println("목요일");
if(week ==Week.FRI) System.out.println("금요일");
if(week ==Week.SAT) System.out.println("토요일");
}
}
week메소드를 만들고
아까 만들었던 Week.java에 저장해뒀던 상수들을 꺼내옵니다.
그리고 main함수에서 객체생성후 d.week()을 입력할 때
'Week.' 을 입력하면
이런식으로 아까 적어두었던 상수들이 옆에 나타나게 됩니다.
그럼 다른 값을 입력하고 싶어도 입력할 수 없기 때문에 개발자 입장에서 실수할 여지를 줄일 수 있게 됩니다.
더 편한 방식)
위 방식대로라면
public enum Month {
JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC;
}
enum을 이렇게 만들고
public class MM {
public static void main(String[] args) {
MM obj = new MM();
obj.month(Month.APR);
}
public void month(Month mon) {
if(mon == Month.JAN) System.out.println("1월");
if(mon == Month.FEB) System.out.println("2월");
if(mon == Month.MAR) System.out.println("3월");
if(mon == Month.APR) System.out.println("4월");
if(mon == Month.MAY) System.out.println("5월");
if(mon == Month.JUN) System.out.println("6월");
if(mon == Month.JUL) System.out.println("7월");
if(mon == Month.AUG) System.out.println("8월");
if(mon == Month.SEP) System.out.println("9월");
if(mon == Month.OCT) System.out.println("10월");
if(mon == Month.NOV) System.out.println("11월");
if(mon == Month.DEC) System.out.println("12월");
}
}
클래스에서 이런 식으로 해야하는데,
더 간편한 방법이 있습니다.
< Month.java >
public enum Month {
JAN("1월"), FEB("2월"), MAR("3월"), APR("4월"),
MAY("5월"), JUN("6월"), JUL("7월"), AUG("8월"),
SEP("9월"), OCT("10월"), NOV("11월"), DEC("12월");
String num;
Month(String num)
{
this.num=num;
}
}
enum에서 이렇게 상수를 입력하고 생성자를 만든후
<MonthMain.java>
public class MonthMain {
public static void main(String[] args) {
MonthMain obj = new MonthMain();
obj.month(Month.APR);
}
public void month(Month mon) {
System.out.println(mon.num);
}
}
아까 만든 Month 생성자를 month함수에서 파라미터로 받고,
main함수에서 Month.APR을 입력하게 되면 4월이 출력됩니다.
'자바' 카테고리의 다른 글
static singleton 템플릿 (0) | 2024.07.19 |
---|---|
자바 로또 예제 (0) | 2024.07.18 |
생산자, 오버로딩 활용하여 원기둥 부피 구하기 예제 (0) | 2024.07.15 |
점3개로 삼각형 넓이 구하기 예제 (1) | 2024.07.15 |
constructor, 생성자 (0) | 2024.07.15 |