Java 열거형(enum)
by 볼빵빵오춘기열거형(enum)
- 관련된 상수들을 같이 묶어 놓은 것이다.
- Java는 타입에 안전한 열거형을 제공한다.(값&타입 모두 체크)
더보기
⇒
if(Card.CLOVER==Card.TWO)
값은 둘다 0이지만 타입이 불일치하여 비교 불가가 나옴.(컴파일에러)
열거형의 정의와 사용
열거형의 조상 - java.lang.Enum
모든 열거형은 Enum의 자손이며, 아래의 메소드를 상속받는다.
메서드 | 설명 |
Class<E> getDeclaringClass() | 열거형의 Class객체를 반환 |
String name() | 열거형 상수의 이름을 문자열로 반환 |
int ordinal() | 열거형 상수가 정의된 순서를 반환(0부터 시작) |
T valueOf(Class<T> enumType, String name) | 지정된 열거형에서 name과 일치하는 열거형 상수를 반환 |
T valueOf(String name) | 열거형 요소들을 순서대로 enum타입의 배열로 리턴. |
⇒ valueOf(Class<T> enumType, String name), T valueOf(String name) 는 static method이며,
⇒ 컴파일러가 자동으로 추가한다.
예제 코드
import java.util.*;
enum Direction { EAST, SOUTH, WEST, NORTH }
public class Try {
public static void main(String[] args) {
Direction d1 = Direction.EAST;
Direction d2 = Direction.valueOf("WEST");
Direction d3 = Enum.valueOf(Direction.class, "EAST");
System.out.println("d1="+d1);
System.out.println("d2="+d2);
System.out.println("d3="+d3);
System.out.println();
System.out.println("d1==d2 ? "+ (d1==d2));
System.out.println("d1==d3 ? "+ (d1==d3));
System.out.println("d1.equals(d3) ? "+ d1.equals(d3));
// System.out.println("d2 > d3 ? "+ (d1 > d3)); // 에러 why? 객체라서 비교연산자 x
System.out.println("d1.compareTo(d3) ? "+ (d1.compareTo(d3)));
System.out.println("d1.compareTo(d2) ? "+ (d1.compareTo(d2)));
System.out.println();
switch(d1) {
case EAST: // Direction.EAST라고 쓸 수 없다.
System.out.println("The direction is EAST."); break;
case SOUTH:
System.out.println("The direction is SOUTH."); break;
case WEST:
System.out.println("The direction is WEST."); break;
case NORTH:
System.out.println("The direction is NORTH."); break;
default:
System.out.println("Invalid direction."); break;
}
Direction[] dArr = Direction.values();
for(Direction d : dArr) // for(Direction d : Direction.values())
System.out.printf("%s=%d%n", d.name(), d.ordinal());
}
}
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java 애너테이션(Annotation) (1) | 2023.12.09 |
---|---|
Java 열거형 멤버추가하기 (0) | 2023.12.09 |
Java 지네릭 타입의 형변환 (0) | 2023.12.09 |
Java 와일드카드, 지네릭메서드 (0) | 2023.12.08 |
Java 제한된 지네릭 클래스, 지네릭스의 제약 (0) | 2023.12.08 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기