JAVA/JAVA 기초

JAVA enum 자바 상수 사용법

김_나무 2022. 8. 26.
반응형
enum 총 정리

enum(enumeration) 열거형(enumerated type) 이란 서로 연관된 상수들의 집합 입니다.


각국의 로컬푸드를 예시로 들겠습니다.

 

1. 국가 => 인도(india), 대표음식 => 커리(curry)

2. 국가 => 대한민국(korea), 대표음식 => 김치(kimchi)

3. 국가 => 멕시코(mexico), 대표음식 => 타코(taco)

4. 국가 => 일본(japan), 대표음식 => 스시(sushi)


1. 상수 클래스 사용

 

먼저 상수 클래스 정의 해보겠습니다.

package test

public final class ConstantCountryLocalFood {

    public static final String INDIA_FOOD = "curry";

    public static final String KOREA_FOOD = "kimchi";

    public static final String MEXICO_FOOD = "taco";

    public static final String JAPAN_FOOD = "sushi";

}

 

 

다음은 상수 클래스에 정의한 변수를 가져다 사용 해보겠습니다.

클래스를 import 할때 static을 붙여 주면 따로 객체선언을 할 필요가 없습니다.

해당 클래스에서 변수를 선언하여 비교 해보겠습니다.

package test

import static test.ConstantCountryLocalFood.*;

public class ConstantTest{
    
    private static String INDIA = "curry";

    private static String KOREA = "kimchi";

    private static String MEXICO = "taco";

    private static String JAPAN = "sushi";

    
    public static void main(String[] args) {
        
        // 인도
        if (INDIA.equals(INDIA_FOOD)){System.out.println("동일합니다.");}
        
        // 대한민국
        if (KOREA.equals(KOREA_FOOD)){System.out.println("동일합니다.");}
        
        // 멕시코
        if (MEXICO.equals(MEXICO_FOOD)){System.out.println("동일합니다.");}
        
        // 일본
        if (JAPAN.equals(JAPAN_FOOD)){System.out.println("동일합니다.");}
        
    }

}

결과

동일합니다.

동일합니다.

동일합니다.

동일합니다.


2. enum 클래스 사용

 

먼저 enum을 정의 해보겠습니다.

1. enum Class에서 정의한 인스턴트들이 있습니다.

2. 각국의 인스턴스 순서 그리고 음식이름 값을 사용하기 위해서는 필드에 num, food 변수를 선언하였습니다.

3. enum Class에서 정의한 인스턴스외 동일한 인자 2개로 기본생성자를 선언합니다.

4. 값을 가지고 오기 위해서 인자 각각의 메소드를 정의 하였습니다.

package test

public enum EnumCountryLocalFood{

    // 인스턴트 정의
    INDIA(1, "curry")
    ,
    KOREA(2, "kimchi")
    ,
    MEXICO(3, "taco")
    ,
    JAPAN(4, "sushi")
    ;


    // 사용할 변수 선언
    private final String num;
    
    private final String food;


    // 인스턴트 인자와 동일하게 기본생성자 선언
    EnumCountryLocalFood(int num, String food) {
        this.num = num;
        this.food = food;
    }


    // 숫자 가져오는 메소드 선언
    public int getNum() {
        return num;
    }

    // 음식이름 가져오는 메소드 선언
    public String getFood() {
        return food;
    }

}

 

 

다음은 enum에 정의한 인스턴스를 가져와서 출력 해보겠습니다.

추가로 .name() 은 enum 클래스에서 제공하는 메소드 입니다.이것은 인스턴스 이름 자체를 가져옵니다.

package test

import test.EnumCountryLocalFood;

public class EnumTest{


    public static void main(String[] args){
    
          
        // 인도
        System.out.println(EnumCountryLocalFood.INDIA.getNum() + "번째로 소개할 국가는 "
                           + EnumCountryLocalFood.INDIA.name() + "입니다. 대표적인 음식은 "
                            + EnumCountryLocalFood.INDIA.getFood() + " 입니다.");

        // 대한민국
        System.out.println(EnumCountryLocalFood.KOREA.getNum() + "번째로 소개할 국가는 "
                + EnumCountryLocalFood.KOREA.name() + "입니다. 대표적인 음식은 "
                + EnumCountryLocalFood.KOREA.getFood() + " 입니다.");


        // 멕시코
        System.out.println(EnumCountryLocalFood.MEXICO.getNum() + "번째로 소개할 국가는 "
                + EnumCountryLocalFood.MEXICO.name() + "입니다. 대표적인 음식은 "
                + EnumCountryLocalFood.MEXICO.getFood() + " 입니다.");


        // 일본
        System.out.println(EnumCountryLocalFood.JAPAN.getNum() + "번째로 소개할 국가는 "
                + EnumCountryLocalFood.JAPAN.name() + "입니다. 대표적인 음식은 "
                + EnumCountryLocalFood.JAPAN.getFood() + " 입니다.");
            
    
    }

}

결과

1번째로 소개할 국가는 INDIA입니다. 대표적인 음식은 curry 입니다.
2번째로 소개할 국가는 KOREA입니다. 대표적인 음식은 kimchi 입니다.
3번째로 소개할 국가는 MEXICO입니다. 대표적인 음식은 taco 입니다.
4번째로 소개할 국가는 JAPAN입니다. 대표적인 음식은 sushi 입니다.


감사합니다.

반응형

댓글

💲 추천 글