AVA - 열거형 (1)
열거형(enum)
- 관련된 상수들을 같이 묶어 놓은 것. JAVA는 타입에 안전한 열거형을 제공
즉, 값과 타입을 모두 체크한다.
class Card{
enum Kind { CLOVER, HEART, DIAMOND, SPADE }
//열거형 kind를 정의 열거형 상수 앞에서부터 0,1,2,3 의 값을 가짐
enum Value { TWO, THREE, FOUR }
//열거형 value를 정의
final kind kind; //타입이 int가 아닌 kind임에 유의하자.
final Value value;
}
///////////////////////////////
if (Card.Kind.CLOVER == CARD.Value.TWO){
// 컴파일에러, 타입이 달라 비교 불가능.
열거형을 정의하는 방법
enum 열거형이름 {상수1, 상수2, ....}
//ex)
//enum Direction{ EAST, SOUTH, WEST, NORTH }
- 열거형 타입의 변수를 선언하고 사용하는 방법
class unit{
int x,y; //유닛의 위치
Direction dir; //열거형 인스턴스 변수를 선언
void init(){
dir = Direction.East; //유닛의 방향을 EAST로 초기화
}
}
- 열거형 상수의 비교에 ==와 compareTo() 사용가능
if(dir==Direction.EAST{
x++;
} else if ( dir > Direction.WEST) //에러, 열거형 상수에 비교연산자 사용 불가능
{
...
} else if dir.compareTo(Direction.WEST>0)
{
//에러, compareTo()는 사용 가능.
}
열거형의 조상
String name()
:열거형 상수의 이름을 문자열로 반환
int ordinal()
:열거형 상수가 정의된 순서를 반환(0부터 시작)
T valueOf(Class<T> enumType, String name)
:지정된 열거형에서 name과 일치하는 열거형 상수를 반환
// - 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.printf("%s=%d%n", d.name(), d.ordinal());
Author And Source
이 문제에 관하여(AVA - 열거형 (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jo_dbsgh95/JAVA-지네릭스Generics-6저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)