참치코더의 꿈 메모장

2021/08/27 Java - 열거형(enums) 본문

JAVA

2021/08/27 Java - 열거형(enums)

참치깡 2021. 8. 27. 19:45
728x90

열거형(enums)

 

자바의 열거형은 C언어의 열거형보다 더 향상된 것으로 열거형이 갖는 값뿐만 아니라 

타입까지 관리하기 때문에 보다 논리적인 오류를 줄일 수 있다.

 

C언어에서는 타입이 달라도 값이 같으면 조건식 결과가 참이면 참인데 

자바의 타입에 안전한 열거형 에서는 실제 값이 같아도 타입이 다르면 조건식의 결과가

false가 된다.

 

값뿐만 아니라 타입까지 체크하기 때문에 안전하다.

 

열거형의 정의와 사용 

 

enum 열거형 이름 {상수명1, 상수명2, . . . }

 

이 열거형에 정의된 상수를 사용하는 방법은 (열거형 이름.상수명) 이다.

 

열거형 상수간의 비교에는 == 를 사용할 수 있다. 

그러나 <,>와 같은 비교연산자는 사용할 수 없고 compareTo( )는 사용이 가능하다.

 

* switch문의 조건식에도 열거형을 사용 할 수 있다.

 

모든 열거형의 조상 - java.lang.Enum

 

모든 열거형의 상수를 출력하는 방법  

 

1
2
3
4
Ex[] eArr = Ex.values();
 
for(Ex e : eArr)
System.out.printf("%s=%d%n",e.name(), e.ordinal());
cs

values( )는 열거형의 모든 상수를 배열에 담아 반환한다. 

ordinal( )은 열거형 상수가 정의된 순서를 정수로 반환한다.

 

Class<E> getDeclearingClass( ) 열거형의 Class객체를 반환한다.
String name( ) 열거형 상수의 이름을 문자열로 반환한다.
int ordinal( ) 열거형 상수가 정의된 순서를 반환한다.
T valueOf(Class<T> enumType, String name) 지정된 열거형에서 name과 일치하는
열거형 상수를 반환한다.

 

열거형에 멤버 추가하기

 

열거형 상수의 값이 불연속적인 경우에는 상수의 이름 옆에 원하는 값을 괄호( )와 함께 적어주면 된다.

 

enum Shop {Toy(1), SNACK(5), ICECREAME(-1), COMPUTER(10)}

 

지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 새로 추가해 주어야 한다.

 

* 열거형 상수를 모두 정의한 다음에 다른 멤버들을 추가해야 한다.

1
2
3
4
5
6
7
enum Shop {
            Toy(1), SNACK(5), ICECREAME(-1), COMPUTER(10);
            private final int value;
            Shop(int value) {this.value = value;}
 
            public int getValue() {return value;}
    }
cs

 

또는 하나의 열거형 상수에 여러 값을 지정할 수도 있다.
그러나 그에 맞게 인스턴스 변수와 생성자 등을 새로 추가해주어야 한다.

 

 

 

728x90
Comments