Enum 클래스가 등장한 배경과 사용 이유 #18
Replies: 2 comments
Enum이 등장하게 된 배경이 무엇인지 설명하고, (힌트: 타입안정성 보장)Enum이 나오기 전에서는 서로 관련된 상수들을 표현할 때 보통 이런 식으로 정수 상수를 사용했다. 이 방식은 다음과 같은 문제들이 있다.
이런 한계를 해결하기 위해 Java 5에서 enum 키워드가 정식도입되었고, 단순 상수 집합을 "타입 안전한 하나의 자료형"으로 다룰 수 있게 되었다. Enum을 사용할 때의 장단점을 서술해주세요.[ 장점1. 타입 안정성(Type Safety) ] [ 장점2. 가독성 향상 ] [ 장점3. 네임스페이스 제공 ] [ 장점4. switch문과의 자연스러운 결합 ] [ 장점5. 상수별 동작 구현 가능 (Java) ] [ 장점6. 싱글턴 패턴 구현에 유리 ] [ 장점7. Collection과의 연동 (Java) ] [ 단점1. 유연성 부족 (동적 확장 어려움) ] [ 단점2. 상속 불가 (Java) ] [ 단점3. 직렬화/역직렬화 시 주의 필요 ]
[ 단점4. 상수 개수가 많아지면 관리 부담 ] [ 단점5. 메모리에 상주 ] [ 단점6. 언어별 지원 범위 차이 ] |
Enum이 등장하게 된 배경이 무엇인지 설명하고, (힌트: 타입안정성 보장)(Enum 이전의 방식과 한계)
public static final int MONDAY = 1;
public static final int TUESDAY = 2;
public static final int APPLE = 1; // 과일의 '사과'도 우연히 1일 수 있음
//타입이 다른 과일과 요일에 저장된 숫자가 같아서 발생한 문제이다.(타입 안전성 없음) 컴파일러는 에러 잡지 못한다.
public static final String MONDAY = "MONDAY";
public static final String MONDAY_TYPO = "MONDAYY"; // 오타 가능성
//오타 가능성이 있으며, 오타가 발생해도 컴파일 시점에는 알 수 없고, 런타임에 문제가 생김
//문자열 비교 연산(equals)을 사용해야 하므로 정수 비교보다 성능 저하
//상수를 모아두는 용도로 인터페이스가 오용됨.위 방식의 한계점을 개선하기 위해 enum을 도입하기 시작했고, enum은 특정 범위의 값이 아니라면 컴파일 에러를 우선적으로 띄워버려서 런타임 예외를 줄일 수 있어, 타입안정성을 보장한다. // Enum 정의
public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
//사용 예시
public class Main {
public static void main(String[] args) {
Day today = Day.MONDAY;
// 타입 안정성 보장: Day 타입 외의 다른 값은 대입할 수 없음
if (today == Day.MONDAY) {
System.out.println("한 주가 시작되었습니다!");
}
}
}Enum을 사용할 때의 장단점을 서술해주세요.Enum을 사용할 때의 장담점은 다음과 같은 5가지가 대표적이다. 허용된 값 외의 잘못된 값이 입력되는 것을 컴파일 시점에 차단하여 타입 안정성이 보장되며, 직관적인 이름을 사용하여 가독성 및 명확성을 향상시킬 수 있다. 네임스페이스를 제공하며 (예: Fruits.APPLE과 Company.APPLE을 완벽히 구분), 단순한 상수 모음을 넘어 객체지향에 맞게 상태/행위 관리가 가능하며(예: 상태 코드별 메시지 매핑), 상수의 이름을 리펙토링 할때 용이하다.
public void orderMenu(MenuType menu) {
switch (menu) {
case HAMBURGER:
System.out.println("8900원입니다.");
break;
case GIMBAP:
System.out.println("5400원입니다.");
break;
case STEAK:
System.out.println("35000원입니다.");
break;
default:
throw new IllegalArgumentException("Invalid menu: " + menu);
}
} |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
📆 일자: 26년 7월 23일(목)
오늘의 질문
Enum이 등장하게 된 배경이 무엇인지 설명하고, (힌트: 타입안정성 보장)
Enum을 사용할 때의 장단점을 서술해주세요.
All reactions