자바
[JAVA] 열거형(enum)
ChaeHing
2023. 3. 7. 17:26
열거형
- 서로 연관된 상수들의 집합
- 몇가지로 한정된 변하지 않는 데이터를 다룬다.
- 여러 상수들을 보다 편리하게 선언하고 관리할 수 있게하며, 상수명의 중복을 피하고, 타입에 대한 안정성을 보장
선언
// 관례적으로 대문자 사용
enum Position { ATTACKER, MIDFIELDER, DEFENDER, GOALKEEPER };
// 정수값 0 1 2 3 할당
- 관례적으로 대문자 사용
- 정수값이 자동으로 0부터 할당
switch문 사용
Position position = Position.MIDFIELDER;
switch(position){
case ATTACKER :
System.out.println("공격수 입니다.");
break;
case MIDFIELDER:
System.out.println("미드필더 입니다.");
break;
case DEFENDER :
System.out.println("수비수 입니다.");
case GOALKEEPER:
System.out.println("골키퍼 입니다.");
default:
System.out.println("벤치 선수 입니다.");
/*
미드필더 입니다.
*/
메소드 사용
Position[] allPosition = Position.values(); // 모든 열거 객체를 배열로 저장
System.out.println(Arrays.toString(allPosition)); // [ATTACKER, MIDFIELDER, DEFENDER, GOALKEEPER]
Position position = Position.DEFENDER; // 참조변수의 열거 객체 DEFENDER 저장
System.out.println(position.name()); // DEFENDER, 열거 객체 문자열 리턴
System.out.println(position.ordinal()); // 2, 열거 객체 순번(index) 리턴
Position position1 = Position.ATTACKER;
System.out.println(position.compareTo(position1)); // 2, 매개값과 순번(index)차이 리턴
System.out.println(Position.valueOf("ATTACKER")); // ATTACKER, 주어진 문자열의 열거 객체 리턴
/*
[ATTACKER, MIDFIELDER, DEFENDER, GOALKEEPER]
DEFENDER
2
2
ATTACKER
*/
리턴 | 타입메소드(매개변수) | 설명 |
String | name() | 열거 객체가 가지고 있는 문자열을 리턴하며, 리턴되는 문자열은 열거타입을 정의할 때 사용한 상수 이름과 동일합니다. |
int | ordinal() | 열거 객체의 순번(0부터 시작)을 리턴합니다. |
int | compareTo(비교값) | 주어진 매개값과 비교해서 순번 차이를 리턴합니다. |
열거 타입 | valueOf(String name) | 주어진 문자열의 열거 객체를 리턴합니다. |
열거 배열 | values() | 모든 열거 객체들을 배열로 리턴합니다. |