상수필드(Constant Field)
- 프로그램에서 리터럴(값) 대신 사용하기 위해 제공되는 필드
- 클래스에 상수필드를 작성할 수 있지만 인터페이스에 상수필드를 작성하여 사용하는 것을 권장
- 인터페이스로 변수를 생성하여 상수필드값 저장 불가능
- 상수필드의 자료형과 동일한 자료형으로 변수를 생성해야만 상수필드값 저장 가능
클래스 또는 인터페이스에 상수필드를 작성할 경우 발생될 수 있는 문제점
- 상수필드를 값을 대표하는 이름으로 사용하기 부적절한 경우 발생
- 상수필드가 작성된 클래스 또는 인터페이스를 자료형보다는 상수필드를 사용하기 위한 접근 용도로만 제공
- Java 언어에서는 클래스 또는 인터페이스에 상수필드를 작성하여 발생될 수 있는 문제점을 해결하기 위해 열거형(Enumerate)이라는 자료형(참조형) 제공
InterfaceOne(interface, 상수필드)
package xyz.it.enumerate;
public interface InterfaceOne {
int INSERT=1, UPDATE=2, DELETE=3, SELECT=4;
}
InterfaceTwo(interface, 상수필드)
package xyz.it.enumerate;
public interface InterfaceTwo {
int ADD=1, MODIFY=2, REMOVE=3, SEARCH=4;
}
InterfaceApp(Class)
package xyz.itwill.enumerate;
public class InterfaceApp {
public static void main(String[] args) {
System.out.println("삽입(InterfaceOne.INSERT) = "+InterfaceOne.INSERT);
System.out.println("변경(InterfaceOne.UPDATE) = "+InterfaceOne.UPDATE);
System.out.println("삭제(InterfaceOne.DELETE) = "+InterfaceOne.DELETE);
System.out.println("검색(InterfaceOne.SELECT) = "+InterfaceOne.SELECT);
System.out.println("==============================================================");
System.out.println("삽입(InterfaceTwo.ADD) = "+InterfaceTwo.ADD);
System.out.println("변경(InterfaceTwo.MODIFY) = "+InterfaceTwo.MODIFY);
System.out.println("삭제(InterfaceTwo.REMOVE) = "+InterfaceTwo.REMOVE);
System.out.println("검색(InterfaceTwo.SEARCH) = "+InterfaceTwo.SEARCH);
System.out.println("==============================================================");
int choice=InterfaceOne.INSERT;
System.out.println("choice = "+choice);
System.out.println("==============================================================");
switch(choice) {
case InterfaceTwo.ADD:
System.out.println("# 학생정보를 삽입합니다.");
break;
case InterfaceOne.UPDATE:
System.out.println("# 학생정보를 변경합니다.");
break;
case InterfaceOne.DELETE:
System.out.println("# 학생정보를 삭제합니다.");
break;
case InterfaceOne.SELECT:
System.out.println("# 학생정보를 검색합니다.");
break;
}
System.out.println("==============================================================");
}
}