enum 열거형 : 서로 연관된 상수들의 집합
인스턴스 생성과 상속을 방지하며 키워드 enum을 사용하여 구현의 의도가 열거임을 분명하게 드러낸다
클래스와 동일하기 때문에 생성자도 생성이 가능하다.
생성자는 private만을 허용 (public 불가능) default가능?
각자 저장한 값은 아래 형식과 같다
public static final Week SUN = new Week();
public enum Week {
SUN, MON, TUE, WED, THU, FRI, SAT
}
public class WeekExample {
public static void main(String[] args) {
WeekExample we = new WeekExample();
we.printWeek(1);
//숫자 타입보다 명백하게 정의할 수 있다
we.printWeek(Week.FRI);
}
/**
* @param num : 1 일요일, 2 월요일 ... 7 토요일
*/
public void printWeek(int num) {
if(num==1) System.out.println("일요일");
if(num==2) System.out.println("월요일");
if(num==3) System.out.println("화요일");
if(num==4) System.out.println("수요일");
if(num==5) System.out.println("목요일");
if(num==6) System.out.println("금요일");
if(num==7) System.out.println("토요일");
}
public void printWeek(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("토요일");
}
}
public enum Week {
SUN("일요일"), MON("월요일"), TUE("화요일"), WED("수요일"),
THU("목요일"), FRI("금요일"), SAT("토요일");
String hangle;
Week(String hangle){
this.hangle=hangle;
}
}
(클래스 처럼 사용가능하다)
public class WeekExample {
public static void main(String[] args) {
WeekExample we = new WeekExample();
we.printWeek(Week.FRI);
}
public void printWeek(Week week) {
System.out.println(week.hangle);
}
}
public enum Card {
SHINHAN, HANA
//개발기능을 추가할 때마다 enum타입에 추가한다
}
public class CardExample {
public static void main(String[] args) {
CardExample ce = new CardExample();
ce.card("국민");
ce.card(Card.HANA);
// String 타입은 여러가지 선택을 할 수 있지만
// enum을 설정함으로 써 선택 제한을 두어 오류를 줄일 수 있음
}
public void card(String card) {
if(card.equals("hana")) hana();
if(card.equals("shinhan")) shinhan();
}
public void card(Card card) {
if(card == Card.HANA) hana();
if(card == Card.SHINHAN) shinhan();
}
private void hana() {
System.out.println("하나 카드 연동");
}
private void shinhan() {
System.out.println("신한 카드 연동");
}
}
public enum Operator {
ADD, SUB, DIV, MUL
}
public class CalExample {
public static void main(String[] args) {
CalExample c1 = new CalExample();
c1.cal(1, 2, Operator.ADD);
}
public double cal(double num1, double num2, Operator op) {
if(op == Operator.ADD) return add(num1,num2);
if(op == Operator.SUB) return sub(num1,num2);
if(op == Operator.MUL) return mul(num1,num2);
if(op == Operator.DIV) return div(num1,num2);
return 0;
}
// + - / * 메소드 각각 만들고 enum type에 추가
public double add(double num1,double num2) {
return num1 + num2;
}
public double sub(double num1,double num2) {
return num1 - num2;
}
public double div(double num1,double num2) {
return num1 / num2;
}
public double mul(double num1,double num2) {
return num1 * num2;
}
}
'JAVA > JAVA BASIC' 카테고리의 다른 글
[JAVA] 상속 - 추상 클래스, 인터페이스 (0) | 2024.03.27 |
---|---|
[JAVA] Getter Setter, 상속 (1) | 2024.03.26 |
3/22 Homework 회원가입 (0) | 2024.03.22 |
3/21 Homework 로또생성기 (0) | 2024.03.22 |
[JAVA] 정적 멤버 static, 접근제한자, 싱글톤 (0) | 2024.03.22 |