열거형 ( enums )
서로 관련된 상수를 편리하게 정의 하기 위한 것으로 기능이 추가 되었고, JDK 1.5 부터 기능이 추가 되었습니다.
기존의 열거 패턴과 문제점
기존에 상수를 정의하는 방법은 이와 같다.
카드의 무늬와 숫자 2가지 타입의 상수들을 정의 해놓고 같은 값들을 비교해보면 같다고 나온다.
결과는 맞지만 의미상으로 타입이 다르므로 다르다 라는 결과가 나와야만 한다.
타입을 다르게 하여 상수를 정의 하였는데 비교 해보면 같은 값이 나온다라는 타입의 불안정한 코드라 문제점을 알아 볼 수 있습니다.
Enum 사용
타입을 정의하여 생성해줍니다.
기존의 코드보다 더욱 간결해진 것을 볼 수 있고 타입 체크를 컴파일 시에 확인 할 수 있고 런타임 실행 전에 에러를 미리 예방을 할 수 있습니다.
컴파일 에러
배열의 인덱스 구조
여기서 우리는 순서대로 정의를 해놓으면 배열과 같은 0부터 시작한 값을 얻어 올 수 있다.
ordinal()
내부 코드의 주석을 확인 해보면 초기의 0의 값으로 지정되 있다 라고 적혀있습니다.
값을 정의 하는 방법
값의 상수를 정의 해고 생성자를 생성하면 정의가 됩니다.
우리는 캡슐화를 지키키 위해 바로 값을 불러오는 것 보다 getter을 사용하는 것이 좋습니다..
여기서 추상 메서드들을 활용하여 사용할 수 있습니다.
valueof() 와 values()
vlaueof() -> 지정된 상수의 이름은 받아와 상수를 반환해줍니다.
여기서 상수의 이름이 정확히 일치해야 에러가 발생되지 않습니다.
values() -> 해당 타입의 상수들을 배열로 반환해 줍니다.
같은 타입의 배열로 받아와야 합니다.
'Laguage' 카테고리의 다른 글
[JAVA] JVM 구조 (0) | 2022.02.11 |
---|---|
[JAVA] 스레드 ( Thread ) (1) | 2022.02.08 |
[JAVA] Optional (0) | 2022.01.20 |
[JAVA] @애노테이션 ( Annotation ) (0) | 2021.12.28 |
[java] 객체지향 프로그래밍 설계 원칙 - SOLID (0) | 2021.12.10 |
[java] 객체지향 프로그래밍 설계 원칙 - 결합도 / 응집도 (0) | 2021.12.09 |
Java DTO 관련 정리... (0) | 2021.11.21 |
[java] 객체지향의 특징 개념부터!! (0) | 2021.10.31 |