- enum2024년 07월 17일
- chantleman
- 작성자
- 2024.07.17.:24
자바에서 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월이 출력됩니다.728x90'자바' 카테고리의 다른 글
static singleton 템플릿 (0) 2024.07.19 자바 로또 예제 (0) 2024.07.18 생산자, 오버로딩 활용하여 원기둥 부피 구하기 예제 (0) 2024.07.15 점3개로 삼각형 넓이 구하기 예제 (1) 2024.07.15 constructor, 생성자 (0) 2024.07.15 다음글이전글이전 글이 없습니다.댓글