반응형
Enum은 클래스처럼 사용 가능한 상수 집합이다.
특징
- 정수값만 사용 가능한 C++과 달리(Do=1, Re=2, Mi=3), Java의 Enum은 문자열, 함수(Java 8 이상)도 사용 가능
- 나열할 수 있는 값들의 수는 제한이 없다.
- 클래스처럼 사용 가능하다. (필드, 메소드, 생성자 정의 가능)
- name에 띄어쓰기는 안 된다 (STARWARS - O, STAR WARS - X)
용도
1. 허용 가능한 값 제한 (국가명, 혈액형 등)
2. 공통 상수로 활용 (경로, 사이즈 등)
기본적인 사용 예
enum ESeason {
SPRING, SUMMER, FALL, WINTER
}
public class EnumBasic {
public static void main(String[] args) {
System.out.println(ESeason.SPRING);
// 출력 : SPRING
System.out.println(ESeason.valueOf("SUMMER"));
// 출력 : SUMMER
System.out.println(ESeason.FALL.name());
// 출력 : FALL
for(ESeason season : ESeason.values()) {
System.out.print(season);
}
// 출력 : SPRINGSUMMERFALLWINTER
System.out.println("WINTER".equals(ESeason.WINTER));
// 출력 : false
System.out.println("WINTER".equals(ESeason.valueOf("WINTER")));
// 출력 : false
System.out.println("WINTER".equals(ESeason.WINTER.name()));
// 출력 : true
}
}
값 연결하여 쓰기
아래와 같이 파라미터에 다른 값을 연결해서 사용할 수 있다.
필드와 파라미터를 가진 생성자, Getter 메소드만 구현해 주면 된다.
ESize.java
public enum ESize {
MAX(100000), MIN(10);
private int value;
private ESize(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
Main.java
public class Main {
public static void main(String[] args) {
int max = ESize.MAX.getValue();
int min = ESize.MIN.getValue();
System.out.println(max);
// 100000
System.out.println(min);
// 10
}
}
함수 연결하여 쓰기
EFunction.java
public enum EFunction {
DOUBLE {
int calc(int value) {
return value*2;
}
},
TRIPLE {
int calc(int value) {
return value*3;
}
};
abstract int calc(int value);
}
Main.java
public class Main {
public static void main(String[] args) {
int num1 = EFunction.DOUBLE.calc(20);
int num2 = EFunction.TRIPLE.calc(30);
System.out.println(num1);
// 40
System.out.println(num2);
// 90
}
}
반응형
'개발_웹 > Java' 카테고리의 다른 글
Java | 컬렉션(Collection), 맵(Map) 정렬하기 (0) | 2019.05.10 |
---|---|
Java | toString() 메소드로 객체의 정보 출력하기 (0) | 2019.05.10 |
Java | 접두사와 접미사로 진수, 타입 표현하기 (0) | 2019.05.10 |
Java | 오버라이딩 (overriding, 재정의) (0) | 2019.05.10 |
Java | this, super / this(), super() (0) | 2019.05.09 |