728x90
Java에서, Enum은 "enumerated type"의 약자로, 주어진 집합 내에서만 값을 가질 수 있는 데이터 타입을 의미합니다. 일반적으로 Enum은 상수의 집합을 표현하는 데 사용됩니다. 하지만 Java에서의 Enum은 단순한 상수 묶음을 넘어서며, 다양한 특징과 장점을 갖추고 있습니다.
Enum의 주요 특징:
- 객체 지향적: Java의 Enum은 실질적으로 클래스입니다. 따라서 메서드, 생성자, 인스턴스 변수를 포함할 수 있습니다.
- 타입 안전: Enum은 미리 정의된 한정된 값들만을 가질 수 있기 때문에, 잘못된 값의 할당을 방지합니다.
- 싱글턴: Enum 상수는 해당 Enum 타입의 싱글턴 인스턴스입니다. 즉, 같은 타입의 다른 객체로 생성될 수 없습니다.
Enum의 장점:
- 코드의 명확성: 상수 이름을 통해 코드의 명확성이 향상됩니다. 예를 들어,
Status.ACTIVE
는1
이나true
보다 훨씬 더 가독성 있게 읽힙니다. - 타입 안정성: Enum은 컴파일 타임에 상수 값을 알 수 있습니다. 따라서 실수로 잘못된 값을 할당하는 것을 방지합니다.
- 기능 추가: Enum은 메서드나 변수를 포함할 수 있어, 연관된 기능을 같이 제공할 수 있습니다.
BoardCategory Enum 클래스 예제:
public enum BoardCategory {
// 각 게시글 카테고리를 Enum 상수로 정의
NEWS("뉴스"),
TIPS("팁"),
QNA("질문/답변"),
REVIEW("리뷰");
// 각 카테고리의 표시 이름
private final String displayName;
// Enum 생성자
BoardCategory(String displayName) {
this.displayName = displayName;
}
// displayName을 반환하는 메서드
public String getDisplayName() {
return displayName;
}
}
Enum 활용 예제:
public class Board {
// 게시글에는 카테고리 정보가 포함되어 있습니다.
private BoardCategory category;
private String title;
public Board(BoardCategory category, String title) {
this.category = category;
this.title = title;
}
@Override
public String toString() {
return "Category: " + category.getDisplayName() + ", Title: " + title;
}
public static void main(String[] args) {
// Enum을 활용한 게시글 객체 생성 예제
//Java의 Enum 상수는 고유한 객체 인스턴스로서 정적(static)으로 생성됩니다.
//따라서 별도의 객체 인스턴스를 생성할 필요가 없이 바로 사용할 수 있습니다.
//그래서 BoardCategory.NEWS와 같이 클래스 이름을 이용하여 직접 접근할 수 있습니다.
Board newsBoard = new Board(BoardCategory.NEWS, "Java 20 Released!");
System.out.println(newsBoard);
}
}
이 예제에서 BoardCategory
는 게시글의 카테고리를 나타내는 Enum 클래스입니다. 각 카테고리는 displayName
을 포함하며, 이는 getDisplayName()
메서드를 통해 얻을 수 있습니다. Board
클래스에서는 BoardCategory
Enum을 활용하여 게시글의 카테고리를 설정하고 출력하는 예제를 제공합니다.
Enum은 한정된 값 집합을 안전하게, 그리고 명확하게 표현할 수 있는 매우 강력한 도구입니다. 이를 통해 코드의 안정성과 가독성을 높일 수 있습니다.
728x90
'Language > Java' 카테고리의 다른 글
[JVM] CPU 캐시와 메인 메모리 사이, @Volatile 어노테이션에 대해 알아보자! (0) | 2024.12.15 |
---|