위로 아래

열거 enum

기본형

enum 열거타입이름 { 상수 목록1, 상수 목록2,  ... }

enum Gender {MALE, FEMALE}

enum 열거타입이름 { 상수 목록1, 상수 목록2,  ... ;
	// 필드
	// 생성자
	// 메소드
}
  1. 열거 enum은 클래스다.
  2. 클래스처럼 생성자와 메소드를 정의해서 사용할 수 있다.
  3. 열거 안의 상수들은 인스턴스(객체)다. 
  4. 열거 안의 상수들은 외부에서 접근할 필요가 전혀 없으므로 자동으로 final private가 적용된다.
  5. 내부에 상수를 선언해서 해당되는 열거 타입으로 선언하면, 그 상수 이외의 값은 가질 수 없게 한정된다.
  6. 열거형 내부 상수 이름(MALE, FEMALE)과 해당되는 열거 값("남성", "여성")을 다르게 지정할 수 있다.

 

 

예시

더보기
public class String8Demo{
	public static void main(String[] args){
		Gender gaesol = Gender.FEMALE;
		if(gaesol == Gender.FEMALE) {
			System.out.println(Gender.FEMALE+"은 병역 의무가 없다");
		} else {System.out.println(Gender.MALE+"은 병역 의무가 있다");}
	}
}
enum Gender{MALE, FEMALE}

 

열거 타입 메소드

name()   // enum 객체를 문자열로 반환
ordinal()   // index 번호를 반환 (몇 번쨰 열거 타입 상수인지)

valueOf()   // 인수로 주어진 문자열에 대응하는 열거 타입 상수 반환
values()    // 모든 열거 타입 상수를 선언한 순서대로 정렬한 배열 반환

name, valueOf, values 예시

더보기
public class String9Demo {
	public static void main(String[] args) {
		Gender gender = Gender.FEMALE;
		if (gender == gender.MALE) {System.out.println(gender.MALE+"은 병역 의무가 있다.");
		} else {System.out.println(gender.FEMALE + "은 병역 의무가 없다.");}   // 결과 여성
		
		for(Gender g : Gender.values())
		{System.out.println(g.name());}   // 결과 MALE, FEMALE
		
		System.out.println(Gender.valueOf("MALE"));   // 결과 남성
		System.out.println(Gender.FEMALE);   // 결과 여성
		
		String s = "안녕";
		System.out.println(s);   // 실제로는 s.toString이 실행되는 것 
		
	}
}

enum Gender {
	MALE("남성"), FEMALE("여성");   // values는 MALE, FEMALE / name은 "남성","여성"
	
	private String s;
	
	Gender(String s){this.s=s;}   // 생성자로 선언, MALE에 "남성" 저장, FEMALE에 "여성" 저장
	
	public String toString() {   // 최상위 클래스의 메소드. 해당 클래스 이름을 출력하며 실행
		return s;
	}
	
}