열거형 enums
열거자 != 열거형
- 관련된 상수를 편하게 선언하기 위한 것으로 여러 상수를 정의할 때 사용하면 좋다.
- ' 타입에 안전한 열거형 ' 이라서 실제 값이 같더라도 타입이 다르면 컴파일 에러 발생
- 상수 값이 바뀌면 해당 상수를 참조하는 모든 소스를 다시 컴파일 해야 한다.
(기존소스는 컴파일 하지 X 된다.)
- 열거형 상수간 비교는 '==' 를 사용할 수 있다.
- ' , ' , 비교연산자는 사용할 수 없고 compareTo()는 사용이 가능
- compareTo()는 두 수를 비교하는 것이고 왼쪽이 크면 양수 , 오른쪽으크면 음수 , 같으면 0을 반환
[열거형 선언 형식]
enum 열거형이름 {상수명1, 상수명2 ,,,}
열거형에 정의된 상수 사용 방법 = '열거형.상수명' (클래스의 static 변수를 참조하는 것과 동일)
java.lang.Enum
- 모든 열거형의 조상
- values()는 열거형의 모든 사우를 배열에 담아 반환
- values() 는 모든 열거형이 가지고 있는 것으로 자동으로 컴파일러가 추가
- ordinal()은 모든 열거형 조상인 java.lang.Enum 클래스에 정의
- 열거형 상수가 정의된 순서는 0부터 시작한 수를 정수로 반환
**Enum 클래스에 정의된 메서드
이 외에도 values() 처럼 자동적으로 컴파일러가 추가해주는 메서드가 하나가 있다.
* 열거형 상수의 이름으로 문자열 상수에 대한 참조를 얻을 수 있는 메서드
- static E values()
- static E valuesOf(String name)
열거형에 멤버추가
- enum Diection { AAA(2), BBB(5), CCC(2), DDD(-4), EEE(3) ; }
지정된 값을 저장할 수 있는 인스턴스 변수와 생성자를 새로 추가해 주어야 한다.
(주의) 열거형 상수를 모두 정의한 다음에 다른 멤버들을 추가 해야한다.