enum
: 서로 관련있는 상수들을 모아 심볼릭한 명칭의 집합으로 정의한 것이다.
- JDK 1.5부터 열거체를 정의한 Enum 클래스를 사용할 수 있다.
- 열거체를 비교할 때 실제 값과 더불어 타입까지 체크할 수 있다.
- 열거체의 상숫값이 재정의되어도 다시 컴파일할 필요가 없다
- 열거된 순서에 따라 0 부터 순서값을 차례대로 가짐
- 마지막 끝에 세미콜론(;)을 붙이지 않음
public enum Type {
WALKING, RUNNING, TRACKING, HIKING
}
하나의 java 파일로 만들어서 선언하기
public class Shoes {
public String name;
public int size;
public enum Type {
WALKING, RUNNING, TRACKING, HIKING
}
}
클래스 안에서 선언하기
enum Type {
WALKING, RUNNING, TRACKING, HIKING
}
public class Shoes {
public String name;
public int size;
public Type type;
}
클래스 밖에서 선언하기
enum Type {
// 상수("연결할 문자")
WALKING("워킹화"), RUNNING("러닝화")
, TRACKING("트래킹화"), HIKING("등산화")
final private String name;
private Type(Stirng name) { //enum에서 생성자 같은 역할
this.name = name;
}
public String getName() { // 문자를 받아오는 함수
return name;
}
}
열거형 상수를 다른 값과 연결하기
class Type {
static final String WALKING = "워킹화";
static final String RUNNING = "러닝화";
static final String TRACKING = "트래킹화";
static final String HIKING = "등산화";
}
public class Shoes {
public static void main(String[] args) {
String w = Type.WALKING;
System.out.println(w);
}
}
클래스의 static final 이용해서 열거형 선언하기
values()
: 열거된 모든 원소를 배열에 담아 순서대로 반환한다ordinal()
: 원소에 열거된 순서를 정수 값으로 반환한다valueOf(String param)
: 매개변수로 주어진 String과 열거형에서 일치하는 이름을 갖는 원소를 반환한다 (존재하지 않으면 IllegalArgumentException 발생)
enum Type {
WALKING, RUNNING, TRACKING, HIKING
}
public class Shoes {
public static void main(String[] args) {
// values()
for(Type type : Type.values()){
System.out.println(type.getName());
}
// ordinal()
Type type = new Type();
System.out.println(Type.RUNNING.ordinal()); // 1
// valueOf()
System.out.println(Type.valueOf("WALKING")); // WALKING
}
}