12-17~20 열거형(enum)
열거형
- 관련된 상수들을 같이 묶어 놓은 것
- Java는 타입에 완전한 열거형을 제공 (Java의 열거형은 값 & 타입 모두 체크)
class Card{
static final int CLOVER = 0;
static final int HEART = 1;
static final int DIAMOND = 2;
static final int SPADE = 3;
static final int TWO = 0;
static final int THREE = 1;
static final int FOUR = 2;
final int kind;
final int num;
if(Card.CLOVER == Card.TWO) // true이지만 false이여야 의미상 맞음.
}
위 코드를 다음과 같이 열거형으로 작성할 수 있다.
class Card{
enum Kind { CLOVER, HEART, DIAMOND, SPADE } // 열거형 Kind 정의
enum Value { TWO, THREE, FOUR } // 열거형 Value 정의
final Kind kind; // 타입이 int가 아닌 Kind 인것에 유의
final Value value;
if(Card.Kind.CLOVER == Card.Value.TWO) // 컴파일 에러!! 타입이 달라서 비교 불가.
}
열거형의 정의와 사용
- 열거형을 정의하는 방법
enum 열거형이름 { 상수명1, 상수명2, ... }
- 열거형 타입의 변수를 선언하고 사용하는 방법
enum Direction { EAST, SOUTH, WEST, NORTH }
class Unit{
int x, y; // 유닛의 위치
Direction dir; // 열거형 인스턴스 변수를 선언
void init(){
dir = Direction.EAST; // 유닛의 방향을 EAST로 초기화
}
}
- 열거형 상수의 비교에 ==와 compareTo(), equals() 사용 가능 (∵ 객체이므로)
if(dir == Direction.EAST){
x++;
} else if (dir > Direction.WEST) { // Error!! 열거형 상수에 비교연산자 사용불가
...
// a.compareTo(b) : return a - b
} else if (dir.compareTo(Direction.WEST) > 0) { // compareTo()는 가능
...
}
열거형의 조상 - java.lang.Enum
- 모든 열거형은 Enum의 자손이며, 아래의 메서드를 상속받는다.
- values(), valueOf()는 컴파일러가 자동으로 추가
static E[] values()
static E valueOf(String name)
Direction[] dArr = Direction.values();
for(Direction d : dArr) // for(Direction d : Direction.values())
System.out.println("%s=%d%n", d.name(), d.ordinal());
Direction d = Direction.valueOf("WEST") // Direction d = Direction.WEST
Author And Source
이 문제에 관하여(12-17~20 열거형(enum)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@oyeon/12-1720-열거형enum저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)