서로 연관된 상수들의 집합
class Emotion { // 참조 data type 생성
public static Emotion h = new Emotion();
public static Emotion s = new Emotion();
public static Emotion a = new Emotion();
}
class Alphabet { // 참조 data type 생성
public static Alphabet h = new Alphabet();
public static Alphabet s = new Alphabet();
public static Alphabet a = new Alphabet();
}
public class Prectice {
public static void start () {
// 참조 data type 으로 변수 생성
Emotion input = Emotion.h;
// switch 는 원시 data type 만 수용가능
// *** 참조 데이터 타입이 들어와서 오류가 발생 ***
switch(input) {
case Emotion.h :
System.out.println("^_^");
break;
case Emotion.s :
System.out.println("ㅜ_ㅜ");
break;
case Emotion.a :
System.out.println("-_-");
break;
}
}
예제와 같이 Switch 문에 참조 data type 이 매개변수로 들어와서 오류가 발생됨
enum Emotion{ //enum class 생성
h,s,a
}
enum Alphabet{
h,s,a
}
public class Prectice {
public static void start () {
Emotion input = Emotion.h;
// data type 이 enum 으로 설정되어 오류가 해결
switch(input) {
// input 변수에서 이미 Emotion을 명시했기 때문에
case h : //따로 class 를 적어놓지 않는다
System.out.println("^_^");
break;
case s :
System.out.println("ㅜ_ㅜ");
break;
case a :
System.out.println("-_-");
break;
}
}
enum Emotion{
//상수 선언
h("Happy",100),s("Sad",50),a("Angrry",10);
//맴버 선언
private String full_name;
private int grade;
// 생성자 선언
Emotion (String full_name, int grade){
this.full_name = full_name;
this.grade = grade;
}
// getter method 생성
public String getFull_name() {
return this.full_name;
}
public int getGrade() {
return this.grade;
}
}
public class Prectice {
public static void start () {
Emotion input = Emotion.h;
switch(input) {
case h : //따로 class 를 적어놓지 않아도
System.out.println("^_^ = "
+ Emotion.h.getFull_name()+ " "
+Emotion.h.getGrade());
break;
case s :
System.out.println("ㅜ_ㅜ = "
+ Emotion.s.getFull_name()
+Emotion.s.getGrade());
break;
case a :
System.out.println("-_- = "
+ Emotion.a.getFull_name()
+Emotion.a.getGrade());
break;
}
}
결과값 : ^-^ = Happy 100
enum Emotion{
h("Happy",100),s("Sad",50),a("Angrry",10);
private String full_name;
private int grade;
Emotion (String full_name, int grade){
this.full_name = full_name;
this.grade = grade;
}
public String getFull_name() {
return this.full_name;
}
public int getGrade() {
return this.grade;
}
}
public class Prectice {
public static void start () {
//enum 배열화
for(Emotion e : Emotion.values()) {
System.out.println(e+" = "+e.getFull_name()+" "+e.getGrade());
}
}