(인터페이스로 상수필드 생성 시 단점)
public interface InterfaceOne {
int INSERT=1, UPDATE=2, DELETE=3, SELECT=4;
}
public interface InterfaceTwo {
int ADD=1, MODIFY=2, REMOVE=3, SEARCH=4;
}
//InterfaceOne.INSERT와 InterfaceTwo.ADD값의 중복됨
System.out.println(InterfaceOne.INSERT);//출력: 1
System.out.println(InterfaceTwo.ADD);//출력: 1
int choice = InterfaceOne.INSERT;
switch(choice) {
case InterfaceOne.INSERT:
System.out.println(InterfaceOne.INSERT);
break;
//InterfaceOne.UPDATE와 동일한 정수값
//다른 인터페이스의 상수필드 값 등 동일한 값만 넣어주면
//비교가 가능하다.
case 2:
System.out.println(2);
break;
}
public enum EnumOne {
//=>
INSERT,UPDATE,DELETE,SELECT;
}
Enum을 나열형으로 변수를 선언하여 자료형으로서의 형태로 사용할 수 있다.
해당 자료형의 상수 필드와 비교 가능하다.
//Enum을 나열형으로 변수를 선언
EnumOne choice = EnumOne.INSERT;//INSERT값 : 0
EnumOne choice = 1;//error: 정수값을 넣을 수 없다.
System.out.println(choice);//출력: 0
//나열형의 변수는 나열형의 상수필드만 비교 가능
switch(choice) {//choice는 0
case INSERT:
System.out.println("# 학생정보를 저장합니다.");
break;
case UPDATE:
System.out.println("# 학생정보를 변경합니다.");
break;
case DELETE:
System.out.println("# 학생정보를 삭제합니다.");
break;
case SELECT:
System.out.println("# 학생정보를 검색합니다.");
break;
}
//출력: # 학생정보를 저장합니다.
상수필드에 원하는 값이 있다면 생성자의 매개변수에 값을 전달하여 상수필드를 초기화 작업 해야한다.
private final 지정자를 이용하여 선언한다.
//필드를 이용하여 상수필드에 원하는 초기값을 저장하기 위해 생성자 선언
private final String value;
생성자는 반드시 private 지정자를 이용하여 선언해야 한다.
private StringEnum(String value) {
this.value=value;
}
Getter 메소드를 호출하여 상수필드에 저장된 초기값 반환받을 수 있다.
public String getValue() {
return value;
}
마지막으로 생성자 매개변수에 상수필드 초기값을 넣어준다.
public enum StringEnum {
INSERT("삽입"),UPDATE("변경"),DELETE("삭제"),SELECT("검색");
}
상수필드와 생성자 상수필드값 출력 비교
System.out.println(StringEnum.INSERT);//출력: INSERT
System.out.println(StringEnum.INSERT.getValue());//출력: 삽입