티스토리 뷰
특정 값만을 가질 수 있는 데이터형을 정의할 때 사용
단순히 클래스에 상수를 모아둔 것과 달리 상수를 정의한 새로운 클래스형을 정의하는 것
AccessModifier enum 열거형이름{
상수들 나열,….
}
열거형은 일반 클래스 정의에서 만들어진 레퍼런스형과 마찬가지로 변수의 선언이 가능하다.
열거형이름 변수명;
열거형에 의해서 선언된 변수는 오로지 열거형에서 정의된 값들만 가질 수 있다.
public enum Color{ Red, Geen, Blue } Color myColor = Color.red; |
열거형에 선언된 각 상수값은 실제로는 해당 열거형의 인스턴스이다.
Color.Red는 일정한 데이터형을 갖고 있는 상수값이 아니라, Color 열거형의 인스턴스 변수이다.
열거형은 단순히 상수를 모아둔 것이 아니고 상수값을 위해서 제공되는 특수한 클래스 형태이다.
열거형의 비교는 == 나 equals() 메서드를 모두 사용해도 된다.
swich문을 이용하는 경우에 case문에는 기본 데이터형밖에는 사용할 수 없지만 열거형만은 예외로 사용이 가능하다. switch문에서는 열거형에 정의된 변수를 열거형의 지정없이 직접 적어주어야 한다.
<Color.java> public enum Color {Red, Green, Blue} <ShowEnum.java> import java.util.*; public class ShowEnum{ Color myColor; public ShowEnum(Color c){ myColor = c; } public Color getColor(){ return myColor; } public void setColor(Color c){ myColor = c; } public static void main(String[] args){ List<ShowEnum> objList = new Vector<ShowEnum>(); ShowEnum obj; obj = new ShowEnum(Color.Red); objList.add(obj); obj = new ShowEnum(Color.Green); objList.add(obj); obj = new ShowEnum(Color.Blue); objList.add(obj); for(ShowEnum param : objList){ switch(param.getColor()){ case Red: System.out.println(“ This Object’s color is RED”); break; case Green: System.out.println(“ This Object’s color is Green”); break; case Blue: System.out.println(“ This Object’s color is RED”); break; } //switch end } //for end } // main end } //class end |