목표
자바의 열거형에 대해 학습하세요.
학습할 것 (필수)
- enum 정의하는 방법
- enum이 제공하는 메소드 (values()와 valueOf())
- java.lang.Enum
- EnumSet
enum 정의하는 방법
JDK 1.5 버전 이전에는 자바에서 열거체를 사용할 수 없었지만 JDK 1.5 버전 이후부터는 열거체를 정의한 Enum 클래스를 사용할 수 있게 되었습니다.
자바의 열거체는 열거체를 비교할 때 타입까지도 체크하고, 상숫값이 재정의 되더라도 컴파일 할 필요가 없다는 장점을 가지고 있습니다.
자바에서 열거체를 정의하는 방법은 enum 키워드를 사용하는 방법입니다.
enum 열거체명 {
상수1,
상수2,
...
상수N;
}
enum School{
CLASS1,
CLASS2,
...
CLASSN;
}
다음과 같이 정의된 열거체의 상숫값은 0부터 설정되어 1씩 증가되며 설정됩니다.
정의한 열거체를 사용하는 방법은 아래와 같습니다.
열거체명.상수명
School.CLASS1
원하는 상숫값으로 열거체를 선언하고 싶으면 이름 오른쪽에 괄호를 넣어 상숫값을 명시하면 됩니다.
public enum School{
CLASS1(24),
CLASS2(30),
...
CLASSN(13);
}
열거체에 선언된 상숫값을 받아오는 방법은 다음과 같이 getValue 메소드를 선언하여 쉽게 받아올 수 있습니다.
public enum School{
CLASS1(24),
CLASS2(30),
...
CLASSN(13);
private final int count;
School(int count) { //constructer
this.count = count;
}
public int getValue() { //getValue method
return value;
}
}
enum이 제공하는 메소드 values()와 valueOf())
자바 열거체의 조상 클래스인 java.lang.Enum 클래스에는 열거체를 다루기 위한 메소드가 포함되어있습니다.
values()
value() 메소드는 열거체의 모든 상수를 배열로 저장하여 반환하는 메소드입니다.
enum School{
A,
B,
C;
}
public class Main{
public static void main(String[] args){
School[] values = School.values();
for(School value : values){
System.out.println(value);
}
}
}
실행 결과:
A
B
C
valueOf()
valueOf() 메소드는 문자열을 인수로 받아 문자열과 일치하는 열거체의 상수를 반환하는 메소드입니다.
enum School{
A,
B,
C;
}
public class Main{
public static void main(String[] args){
School value = School.valueOf("A");
System.out.println(value);
}
}
실행결과
A
java.lang.Enum
Enum 클래스의 다른 대표적인 메소드는 다음과 같습니다.
|Method|description|
|------|-----------|
|static E values()|열거체를 배열로 반환|
|static E valueOf(String name)|name에 해당하는 열거체 상수를 반환|
|protected void finalize()|해당 Enum클래스가 final 메소드를 갖지 못하게 됨|
|String name()|열거체 상수 이름 반환|
|int ordinal()|열거체 상수의 정의된 순서 반환|
EnumSet
java.util.EnumSet 클래스는 AbstractSet클래스를 상속하고 있으며 Set 자료구조의 특징을 가지고 있는 클래스이다.
enum School{
A,
B,
C;
}
public class Main{
public static void main(String[] args){
EnumSet<School> set;
set = EnumSet.allOf(School.class);
System.out.println(set1);
}
}
실행결과
set = [A,B,C];
'JAVA > STUDY HALLE' 카테고리의 다른 글
[12주차] 자바스터디 - 애노테이션 (0) | 2021.02.07 |
---|---|
[10주차] 자바스터디 - 멀티쓰레드 (0) | 2021.01.28 |
[9주차] 자바스터디 - 예외 처리 (0) | 2021.01.21 |
[8주차] 자바스터디 - 인터페이스 (0) | 2021.01.20 |
[7주차] 자바스터디 - 패키지 (0) | 2021.01.19 |