English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 가이드

Java 흐름 제어

Java 배열

Java 방향 대상(I)

Java 방향 대상(II)

Java 방향 대상(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map集合

Java Set集合

Java 입력 출력(I/O)

Java Reader/Writer

Java 다른 주제

Java 열거형 (Enum)

이 튜토리얼에서는 Java의 열거를 배웁니다. 예제를 통해 열거와 열거 클래스를 생성하고 사용하는 방법을 배웁니다.

Java에서 열거는 고정된 가능 값 집합을 가진 타입입니다. 우리는 enum 키워드를 사용하여 열거를 선언합니다. 예를 들어,

enum Size { 
   SMALL, MEDIUM, LARGE, EXTRALARGE 
{}

여기서는 Size라는 열거를 생성했습니다.

구현 안에 있는 값은 열거 값(상수)으로 불립니다. 이는 열거 타입이 유지할 수 있는 독특한 값입니다.

주의:열거 상수는 일반적으로 대문자로 표시됩니다.

간단한 예제를 들어보겠습니다.

enum Size {
   SMALL, MEDIUM, LARGE, EXTRALARGE
{}
class Main {
   public static void main(String[] args) {
      System.out.println(Size.SMALL);
      System.out.println(Size.MEDIUM);
   {}
{}

출력 결과

SMALL
MEDIUM

위의 예제에서 볼 수 있듯이, 우리는 상수 값에 접근하기 위해 열거 이름을 사용합니다.

또한, 열거형 타입의 변수를 생성할 수 있습니다. 예를 들어,

Size pizzaSize;

여기서 pizzaSize는 Size 타입의 변수입니다. 그것은 다음 값 중 하나만 할당할 수 있습니다4개의 값.

pizzaSize = Size.SMALL;
pizzaSize = Size.MEDIUM;
pizzaSize = Size.LARGE;
pizzaSize = Size.EXTRALARGE;

예제1:Java 열거형

enum Size {
 SMALL, MEDIUM, LARGE, EXTRALARGE
{}
class Test {
 Size pizzaSize;
 public Test(Size pizzaSize) {
   this.pizzaSize = pizzaSize;
 {}
 public void orderPizza() {
   switch(pizzaSize) {
     case SMALL:
       System.out.println("저는 작은 피자를 주문했습니다.");
       break;
     case MEDIUM:
       System.out.println("저는 중형 피자를 주문했습니다.");
       break;
     default:
       System.out.println("나는 어떤 것을 주문해야 할지 모르겠어.");
       break;
   {}
 {}
{}
class Main {
 public static void main(String[] args) {
   Test t1 = new Test(Size.MEDIUM);
   t1.orderPizza();
 {}
{}

출력 결과

저는 중형 피자를 주문했습니다.

위 프로그램에서는 열거형 타입 Size를 생성했습니다. 그런 다음 Size 타입의 변수 pizzaSize를 선언했습니다.

변수 pizzaSize는 다음 값 중 하나만 할당할 수 있습니다4개의 값(SMALL, MEDIUM, LARGE, EXTRALARGE).

변수 pizzaSize에 MEDIUM 상수가 할당되었습니다. 이에 따라 switch case 문의 한 경우를 출력합니다.

Java 열거형 클래스

Java에서 열거형 타입은 클래스의 특별한 유형으로 간주됩니다. 이는 Java 5발행 버전에서 도입됨.

열거형 클래스는 일반 클래스와 같이 메서드와 필드를 포함할 수 있습니다.

enum Size {
    constant;1, constant;2, …, constantN;
    //메서드와 필드
{}

열거형 상수는 항상 default로 public static final로 설정됩니다.

enum 클래스를 생성할 때, 컴파일러는 각 enum 상수의 인스턴스(객체)를 생성합니다.

예제2:열거형 클래스

enum Size{
   SMALL, MEDIUM, LARGE, EXTRALARGE;
   public String getSize() {
      //이는 OBJECT.SMALL을 참조합니다
      switch(this) {
         case SMALL:
          return "small";
         case MEDIUM:
          return "medium";
         case LARGE:
          return "large";
         case EXTRALARGE:
          return "extra large";
         default:
          return null;
      {}
   {}
   public static void main(String[] args) {
      //SMALL 객체를 사용하여 메서드 getSize()를 호출합니다
      System.out.println("피자의 크기는 " + Size.SMALL.getSize());
   {}
{}

출력 결과

피자의 크기는 small입니다

위의 예제에서는 Size라는 열거형 클래스를 생성했습니다. 이 클래스는 SMALL, MEDIUM, LARGE, EXTRALARGE라는 네 개의 상수를 가집니다.

Size는 열거형 클래스이므로 컴파일러는 각 열거형 상수에 대해 자동으로 인스턴스를 생성합니다.

main() 메서드 내에서는 SMALL 인스턴스를 사용하여 getSize() 메서드를 호출했습니다.

일반 클래스와 마찬가지로 열거형 클래스도 생성자를 포함할 수 있습니다. 자세한 정보는 다음을 참조하십시오Java 열거형 생성자.

열거형 클래스의 메서드

열거형 클래스에는 언제든지 사용할 수 있는 몇 가지 предопределенные 메서드가 있습니다.

ordinal() 메서드는 열거형 상수의 위치를 반환합니다. 예를 들어,

ordinal(SMALL) 
//0을 반환합니다

compareTo() 메서드는 순서 값을 기준으로 열거형 상수를 비교합니다. 예를 들어,

Size.SMALL.compareTo(Size.MEDIUM)
 //ordinal(SMALL)을 반환합니다 - ordinal(MEDIUM)

toString() 메서드는 열거형 상수의 문자열 표현을 반환합니다. 예를 들어,

SMALL.toString()
//"SMALL"을 반환합니다

name() 메서드는 열거형 상수의 정의 이름을 문자열 형태로 반환합니다. name() 메서드가 반환하는 값은 final입니다. 예를 들어,

name(SMALL)
//"SMALL"을 반환합니다

valueOf() 메서드는 문자열을 사용하여 동일한 문자열 이름을 가진 열거형 상수를 반환합니다. 예를 들어,

Size.valueOf("SMALL")
//상수 SMALL을 반환합니다

values() 메서드는 모든 열거형 상수를 포함한 열거형 유형 배열을 반환합니다. 예를 들어,

Size[] enumArray = Size.value();

Java 열거형을 사용하는 이유는 무엇인가요?

Java에서는 int 상수 사용을 대체하기 위해 enum을 도입했습니다.

가정해 보겠습니다. 우리가 int 상수 집합을 사용했습니다.

class Size {
   public final static int SMALL = 1;
   public final static int MEDIUM = 2;
   public final static int LARGE = 3;
   public final static int EXTRALARGE = 4;
{}

 여기서, 우리가 상수를 출력하면 문제가 발생합니다. 이는 단순히 숫자만 출력되기 때문에 도움이 되지 않을 수 있습니다.

따라서, 우리는 간단하게 열거형을 사용하여 int 상수를 대체할 수 있습니다. 예를 들어,

enum Size {
   SMALL, MEDIUM, LARGE, EXTRALARGE
{}

이것은 우리의 코드를 더 직관적이게 만듭니다.

또한, 열거형은 컴파일 시간 타입 보안을 제공합니다.

만약 우리가 Size 타입의 변수를 선언하면(위의 예제와 같이), 그 변수가 네 가지 중 하나의 값을 포함할 수 있음을 보장할 수 있습니다. 네 가지 값 이외의 값을 전달하려고 시도하면 컴파일러는 오류를 표시합니다.