위로
아래
열거 enum
기본형
enum 열거타입이름 { 상수 목록1, 상수 목록2, ... }
enum Gender {MALE, FEMALE}
enum 열거타입이름 { 상수 목록1, 상수 목록2, ... ;
// 필드
// 생성자
// 메소드
}
- 열거 enum은 클래스다.
- 클래스처럼 생성자와 메소드를 정의해서 사용할 수 있다.
- 열거 안의 상수들은 인스턴스(객체)다.
- 열거 안의 상수들은 외부에서 접근할 필요가 전혀 없으므로 자동으로 final private가 적용된다.
- 내부에 상수를 선언해서 해당되는 열거 타입으로 선언하면, 그 상수 이외의 값은 가질 수 없게 한정된다.
- 열거형 내부 상수 이름(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;
}
}