enum!!! 이해라도 해보자
Enumd이 필요한 이유
String 타입은 어떤 문자열이든 입력 할 수 있기 때문에 문제가 발생할 상황이 많다.
이 문제를 타입 안전성 부족 문제 라고 부른다.
1. 값의 제한 부족: String으로 상태나 카테고리를 표현하면 잘못된 문자열을 실수로 입력할 가능성이 있다.(오타)
2. 컴파일 시 오류 감지 불가: 이러한 잘못된 값은 컴파일 시에는 감지되지 않고, 런타임에서만 문제가 발견된다(디버깅 어려움)
이런 문제를 해결하려면 특정 범위로 값을 제한해야한다. 예를 들어 어떤 머세드에서 String을 변수로 받는다면 어떤 문자열이든 받을 수 있기 때문에 자바 문법 관점에서는 어떤 문제도 없다.
Enumd이란
타입 안전 열거형 패턴 - Type-Safe Enum Pattern
enum(enumeration) : 열거,나열 "Entmeration"은 상수들의 집합을 정의하는 것을 의미한다.
enum의 가장 중요한 점은 타입 안전 열거형 패턴을 사용하면 나열한 항목만 사용할 수 있다는 것이 핵심이다.(다른것은 사용불가)
자바의 enum은 타입 안정성을 제공하고, 코드의 가독성을 높이며, 예상 가능한 값들의 집합을 표현하는 데 사용된다.
※ 열거형은 switch 문에 사용할 수 있다는 장점도 가지고 있다. e
열거형(Enumd) 의 장점
타입 안정성 향상: 열거형은 사전에 정의된 상수들로만 구성되므로, 유효하지 않은 값이 입력될 수 없다.(컴파일오류)
간결성 및 일관성: 코드가 더 간결해지고 명확해지며 데이터의 일관성 보장
확장성: 새로운 등급 타입을 추가하고 싶을 때, Enum에 새로운 상수를 추가하기만 하면 된다.
※ 'static import` 를 사용하면 더 읽기좋은 코드가 된다. ex) Grade.GOLD -> GOLD 로 사용 가능
Enum주요 메서드
values() : 모든 ENUM 상수를 포함하는 배열을 반환한다. ex) Grade[] values = Grade.values(); -> 배열에 저장
valueOf(String name); 주어진 이름과 일치하는 ENUM 상수를 반환한다. ex) Grade gold = Grade.valueof("GOLD"); name(): ENUM 상수의 이름을 문자열로 반환한다.
ordinal(): ENUM 상수의 선언 순서(0부터 시작)를 반환한다.
toString(): ENUM 상수의 이름을 문자열로 반환한다. `name()` 메서드와 유사하지만, `toString()` 은 직접
오버라이드 할 수 있다.
※`ordinal()` 의 값은 가급적 사용하지 않는 것이 좋다. 왜냐하면 이 값을 사용하다가 중간에 상수를 선언하는 위
치가 변경되면 전체 상수의 위치가 모두 변경될 수 있기 때문이다.
열거형(Enum)정리
열거형은 `java.lang.Enum` 를 자동(강제)으로 상속 받는다.
열거형은 이미 `java.lang.Enum` 을 상속 받았기 때문에 추가로 다른 클래스를 상속을 받을 수 없다.
열거형은 인터페이스를 구현할 수 있다.
열거형에 추상 메서드를 선언하고, 구현할 수 있다.
실제 사용 후기
Enum을 정리하게 된 계기: 팀과제를 진행하던 중 .템플릿으로 나온 코드에서 약간 비효율적으로 보이는 코드를 발견!!
한번 고쳐보자!!
https://winner7789.tistory.com/29
여기서 사용후기 정리
이것이 완성 코드
'TIL' 카테고리의 다른 글
정적 컨테츠, MVC, API (1) | 2024.05.16 |
---|---|
팀프로젝트 KPT (0) | 2024.05.13 |
예외처리하기 (0) | 2024.05.01 |
상속과 오버라이딩(Overriding) (1) | 2024.04.30 |
인터페이스 (0) | 2024.04.29 |