반응형
- enum 클래스란? -
enum 클래스는 열거체(enumeration type)으로 JDK 1.5 이상의 버전에서만 사용이 가능하다.
간단하게 정의하자면 다음과 같다.
- 클래스처럼 보이게 하는 상수
- 서로 관련있는 상수들끼리 모아 상수들을 정의하는것
- enum 클래스 형을 기반으로 한 클래스형 선언
그리고 enum 클래스를 사용하기 전에 특징을 알아두는게 좋다.
▷ 특징
1. 열거형으로 선언된 순서에 따라 0부터 index 값을 가진다.(순차적으로 증가)
2. enum 열거형으로 지정된 상수들은 모두 대문자로 선언한다.
3. 열거형 변수들을 선언한 후 마지막에 세미콜론(;)을 찍지 않는다.
4. 상수와 특정 값을 연결시킬경우 마지막에 세미콜론(;)을 붙여줘야한다.
이제 본격적으로 하나하나 알아가 보도록하자.
열거체 정의
열거체 정의는 enum 클래스용인 java파일로 선언, 타 클래스 내부에 선언, 클래스 외부에 선언 등으로 이용하고는 하는데,
일반적으로 열거체 정의용 java class 파일을 따로 만들어 사용하고는 한다.
기본적인 문법은 아래와 같다.
문법 : enum 열거체 이름 {상수1, 상수2, ...}
코드 : enum Company {SK, LG, KT, SAMSUNG, APPLE}
사용법 : Company.APPLE
enum 메서드
Static Methods |
valueOf(String arg) | String 값을 enum에서 가져온다. 값이 없으면 Exception 발생 |
valueOf(Class<T> class, String arg) | 넘겨받은 class에서 String을 찾아, enum에서 가져온다. valueOf(String arg)는 내부적으로 자기 자신의 class를 가져오는 것이다. | |
values() | enum의 요소들을 순서대로 enum 타입의 배열로 리턴한다. ENUM$VALUES의 카피이므로, 너무 자주 호출하는 것은 좋지 않음 |
|
Static 아닌 Methods |
name() | 호출된 값의 이름을 String으로 리턴한다. |
ordinal() | 해당 값이 enum에 정의된 순서를 리턴한다. (index 값 리턴) | |
compareTo(E o) | 이 enum과 지정된 객체의 순서를 비교한다. 지정된 객체보다 작은 경우 음의 정수, 동일하면 0, 크면 양의 정수를 반환한다. | |
equals(Object other) | 지정된 객체가 이 enum 정수와 같은 경우, true를 반환한다. |
여기서 주로 사용되는 메서드는 values(), ordinal(), valueOf() 정도다.
예제 1) 열거체 정의 (Company.java)
public enum Company {
SK("에스케이"),
LG("엘쥐"),
KT("케이티"),
SAMSUNG("삼성"),
APPLE("애플");
private final String value;
Company(String value){
this.value = value;
}
public String getValue(){
return value;
}
}
* 상수와 특정값을 연결시켜놓은건데 특정값을 연결시키려면 해당 값들을 리턴할 수 있는 함수가 선언되어있어야한다.
예제 2) enum 상수와 연결된 값 가져오기
public class TestEnum {
public static void main(String[] args) {
for(Company type : Company.values()){
System.out.println(type.getValue()); // 에스케이, 엘쥐, 케이티, 삼성, 애플
}
System.out.println(Company.APPLE.getValue()); // 애플
}
}
예제 3) enum 클래스 메서드 사용 (ft. values(), ordinal())
public class TestEnum {
public static void main(String[] args) {
for(Company type : Company.values()){
System.out.println(type); // SK, LG, KT, SAMSUNG, APPLE
}
System.out.println(Company.APPLE.ordinal()); //4
}
}
values() : enum에 선언된 상수를 전부 가져온다. (예제 출력을 위해 for문에 사용)
ordinal() : 해당 상수의 index값을 출력한다.
예제 4) switch문 사용
public class TestEnum {
enum Company { SK, LG, KT, SAMSUNG, APPLE }
public static void main(String[] args) {
int test = 1;
if(test == 1){
switchFt(Company.SAMSUNG);
}...
public static void switchFt(Company company){
switch(company){
case SK :
System.out.println("SK 입니다.");
break;
case LG :
System.out.println("LG 입니다.");
break;
case KT :
System.out.println("KT 입니다.");
break;
case SAMSUNG :
System.out.println("SAMSUNG 입니다.");
break;
case APPLE :
System.out.println("APPLE 입니다.");
break;
}
}
}
반응형
댓글