#열거형 (enum)
- 관련된 상수들을 같이 묶어 놓은 것. Java는 타입에 안전한 열거형을 제공
enum 에 저장된 값들은 자동으로 0부터 값을 부여받는다. 순서를 부여받는다.
즉 enum은 static final int 인 것이다.
관련된 Static final 상수들을 관련되게 묶어 놓은 것.
자바는 값과 타입이 둘 다 같아야 같다 라고 한다. 그래서 값이 같더라도 타입이 다르다면 다르다.
그래서 if(Card.Kind.CLOVER == Card.Value.TWO) 는 컴파일 에러가 난다. 타입이 달라서 비교가 불가능하다.
#열거형의 정의와 사용
- 열거형을 정의하는 방법
enum 열거형 이름 { 상수명1, 상수명2, ... }
enum Direction { EAST, SOUTH, WEST, NORTH }
- 열거형 타입의 변수를 선언하고 사용하는 방법
- 열거형 상수의 비교에 ==와 compareTo() 사용가능
==, equals()는 값을 비교하고
compareTo()는 이전 값에서 파라미터를 뺀 값을 반환한다.
비교 연산자는 불가능하지만 compareTo()는 가능 -> dir.compareTo(Direction.WEST) > 0 은 가능
#열거형의 조상 - java.lang.Enum
- 모든 열거형은 Enum의 자손이며, 아래의 메서드를 상속받는다.
for문을 통해서 값들을 출력할 수 있다.
배열로 받을 수도 있다. vlaues()를 통해서 배열을 반환한다.
switch문에서는 case 값에 Direction.EAST 값을 쓸 수 없고, EAST 값이 들어갈 수 있다.
#enum 선언 방법
참고 - https://www.youtube.com/watch?v=ODHC-n4mpMY&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=142
'Java의 정석' 카테고리의 다른 글
열거형 - 열거형 멤버 추가하기 (3) | 2024.10.14 |
---|---|
클래스의 또 다른 정의 (0) | 2023.09.08 |
객체 배열 (0) | 2023.09.08 |
클래스와 객체의 정의와 용도 (0) | 2023.09.08 |
객체지향언어 (0) | 2023.09.08 |